尝试访问子TabNavigator

时间:2017-11-05 10:43:09

标签: react-native react-redux react-navigation

我目前正在尝试在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);

这是我得到的错误:

enter image description here 我想我理解错了。有什么想法/建议吗?

0 个答案:

没有答案