我目前正在尝试在react-navigation中访问子选项卡导航器中的父选项卡导航器状态,同时将redux集成到应用程序中。但是在尝试实现同样的目标时我遇到了错误。
它在docs中说
执行此操作后,您的导航状态将存储在您的redux商店中,此时您可以使用redux调度功能触发导航操作。
请记住,当导航器被赋予导航道具时,它会放弃对其内部状态的控制。这意味着您现在负责持久化其状态,处理任何深层链接,处理Android中的硬件后退按钮等。
嵌套时,导航状态会自动从一个导航器传递到另一个导航器。请注意,为了让子导航器从父导航器接收状态,应将其定义为屏幕。
所以文档告诉我们状态是传递下来的。所以从技术上讲,我应该能够在childNavigator中访问它们。但出于某种原因,我最终出错了。
这是我的rootNavigator:
class RootTab extends Component {
render() {
const { dispatch, rootNavigationState } = this.props;
return (
<RootTabConfiguration
rootNavigation={
addNavigationHelpers({
dispatch,
rootState: rootNavigationState,
})
}
/>
);
}
}
const mapStateToProps = (state) => {
return {
rootNavigationState: state.rootTabState,
};
};
export default connect(mapStateToProps)(RootTab);
这是我的儿童导航器:
class HomeTab extends Component {
render() {
const { dispatch, homeNavigationState } = this.props;
const { rootState } = this.props.rootNavigation; //This line causes the error
return (
<HomeTabConfiguration
homeNavigation={
addNavigationHelpers({
dispatch,
homeState: homeNavigationState,
rootState
})
}
/>
);
}
}
const mapStateToProps = (state) => {
return {
homeNavigationState: state.homeTabState,
};
};
export default connect(mapStateToProps)(HomeTab);
这是我得到的错误: