我想在场景的顶层添加一些“逻辑组件”。
即我明白了:
<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,并且每个容器都有自己的 reducer,只有它自己需要。
IE:
export default connect(mapStateToProps, mapDispatchToProps)(HomeContainer)
所以,我需要做的是将“根”场景连接到 Redux 并为其提供通用减速器(所有其他场景都依赖的减速器)。但是有了这个,我想使用componentDidUpdate,componentWillReceiveProps,...来监听,即连接更改时的Netinfo,以更新reducer的状态。
我不确定它是否清楚,我希望它是。如果您需要更多信息,请询问他们。
谢谢您的帮助
解决方案
看看 atlanteh 的答案,看看它说的一切所需的文档 :) 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”或其他任何内容。