シーンのトップ レベルに「ロジック コンポーネント」を追加したいと思います。
つまり、私はそれを得ました:
<Router>
<Scene key="root" hideNavBar={true}>
<Scene key="home" component={HomeContainer} />
<Scene key="search" component={SearchContainer} />
<Scene key="list" component={ListContainer} />
...
</Scene>
</Router>
各コンテナーは、connect()() を使用して Redux に接続され、それぞれが必要とする独自のレデューサーを取得します。
すなわち:
export default connect(mapStateToProps, mapDispatchToProps)(HomeContainer)
したがって、「ルート」シーンを Redux に接続し、一般的なレデューサー (他のすべてのシーンも依存するもの) を与える必要があります。しかし、それで、私は componentDidUpdate、componentWillReceiveProps、... を使用してリッスンします。つまり、接続が変更されたときに Netinfo を使用して、リデューサーの状態を更新します。
明確かどうかはわかりませんが、そうであることを願っています。さらに情報が必要な場合は、彼らに尋ねてください。
助けてくれてありがとう
解決
アトランテの答えを見て、必要なものがすべて書かれているドキュメントを見てください:) https://github.com/aksonov/react-native-router-flux/tree/master/docs
すべてが期待どおりに機能する私の最終的な解決策は次のとおりです。
const ConnectedRouter = connect()(Router)
const scenes = Actions.create(
<Scene key="root" hideNavBar={true}>
<Scene key="home" component={HomeContainer} />
</Scene>
)
class ReduxRouter extends Component {
componentWillReceiveProps(newProps) {
if(!newProps.isConnected) {
// logic
}
}
render() {
return (
<ConnectedRouter scenes={scenes} {...this.props}/>
)
}
}
const mapStateToProps = (state) => {
return {
// State
}
}
const mapDispatchToProps = (dispatch) => {
return bindActionCreators({
// Actions
}, dispatch);
}
export default connect(mapStateToProps, mapDispatchToProps)(ReduxRouter);
それは基本的に私が以前に試したすべてのものを組み合わせたもので、うまく機能します! 「キー xxx は既に定義されています」などはありません。