首页 > 解决方案 > 对于 react-navigation v6,getStateForAction 未定义

问题描述

目前我正在将我react-navigation的从 v4 升级到 v6。但是我在为我的应用程序获取初始状态时遇到了问题。

// AppNavigation.js
// All the screens and packages are imported
function switchNavigator() {
  return (
    <NavigationContainer>
      <Stack.Navigator initialRouteName="loginFlow">
        <Stack.Screen name="loginFlow" component={loginFlow} />
        <Stack.Screen name="mainFlow" component={mainFlow} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}
export default switchNavigator;

现在我使用下面的代码来获取初始状态并设置它,如果它在我的 redux 导航中未定义。

import AppNavigation from '../Navigation/AppNavigation';

export const reducer = (state, action) => {
  const newState = AppNavigation.router.getStateForAction(action, state);
  return newState || state;
};

但我收到了这个错误

TypeError: undefined is not an object (evaluating '_AppNavigation.default.router.getStateForAction')

标签: react-nativereact-navigationstack-navigator

解决方案


这是来自 React Navigation Library 的 Awesome 功能,我们可以使用导航选项而无需像组件那样访问 Props。

请参考 React Navigation 中的以下文档页面,希望它可以帮助您实现。

反应导航在没有道具的情况下访问导航


推荐阅读