首页 > 解决方案 > 嵌套反应导航配置在应用程序上下文中找不到 redux 商店

问题描述

我有一个带有 redux 和 react-navigation 的 react-native 应用程序。我正在尝试创建 2 个导航器。第一个是stackNavigator,包含 4 个屏幕,第二个是 a bottomTabBarNavigator,包含 2 个屏幕。两者都合并为一个, createAppContainer(createStackNavigator(navigator1, navigator2)) 我也有 redux。

除了第二个导航器的一个屏幕外,一切正常。(它有 2 个屏幕,第一个工作正常,第二个是抛出错误。

我已经改变了 AppNavigator 连接,从简单

export default AppNavigator

export default connect()(AppNavigator)
App.js - main container
class App extends Component {
    render() {
        return (
            <Provider store={store}>
                <PersistGate persistor={persistor}>
                        <AppNavigator/>
                </PersistGate>
            </Provider>
        );
    }
}


AppNavigator.js 

const navigator = createStackNavigator({
    Login: {screen: LoginView, navigationOptions: {header: null}},
    Menu: {screen: MenuView},
    Competition: {screen: CompetitionView},
    Map: {screen: CompetitionMapView},
});

const singleNavigator = createBottomTabNavigator({
    CompetitionDetails: {screen: CompetitionDetailsView},
    RouteView: {screen: RouteView}
});

const AppNavigator = createAppContainer(createStackNavigator({
    Main: navigator,
    Competition: singleNavigator
}));

singleNavigator.navigationOptions = () => {
    return {
        header: null,
    };
};

navigator.navigationOptions = () => {
    return {
        header: null,
    };
};

export default connect(undefined,undefined)(AppNavigator);


RouteView.js - component causing error, 

// normal react component with only render and mapStateToProps / mapDispatchToProps funcs

export default connect(
    mapStateToProps,
    mapDispatchToProps
)(RouteView);


一切正常,直到来自“singleNavigator”的 RouteView。当我通过此屏幕时,结果如下错误:

不变违规:不变违规:在“连接(RouteView)”的上下文中找不到“商店”。要么将根组件包装在 a 中<Provider>,要么将自定义的 React 上下文提供程序传递给<Provider>连接选项中的 Connect(RouteView),并将相应的 React 上下文使用者传递给 Connect(RouteView)。

标签: javascriptreact-nativereduxreact-reduxreact-navigation

解决方案


推荐阅读