标签导航器屏幕上的IntialParams未定义(反应导航v5)

时间:2020-03-25 02:44:24

标签: react-native react-navigation react-navigation-v5

我正在尝试将InitialParam道具传递给TabNavigator屏幕。它只是做一个概念证明,就应该成为本地状态的登录部分。它在堆栈导航器屏幕上可以正常工作,但是选项卡屏幕上的route.params是未定义的。我在做什么错了?

此外,我非常确定这将必须根据状态管理进行更改,但是我想确保可以简单地更改父App中的状态并使它生效。它可以在堆栈屏幕上工作,这意味着我可以调用setLoggedIn(true),它将带我进入标签导航器。但是我不能回去...

const Track = () => {
  return (
    <TrackStack.Navigator>
      <TrackStack.Screen
        name='TrackListScreen'
        component={TrackListScreen}
      />
      <TrackStack.Screen
        name='TrackDetailScreen'
        component={TrackDetailScreen}
      />
    </TrackStack.Navigator>
  );
};

const App = () => {
  const [loggedIn, setLoggedIn] = useState(false);

  return (
    <NavigationContainer>
      {loggedIn ? //is logged in 
        (
          <MainTab.Navigator>
            <MainTab.Screen
              name='TrackCreateScreen'
              component={TrackCreateScreen}
              initialParams={{ setLoggedIn }}
            />
            <MainTab.Screen
              name='AccountScreen'
              component={AccountScreen}
            />
            <MainTab.Screen
              name='Track'
              component={Track}
            />
          </MainTab.Navigator>
        ) : (
          <LoginStack.Navigator>
            <LoginStack.Screen
              name='SignupScreen'
              component={SignupScreen}
              initialParams={{ setLoggedIn }}
            />
            <LoginStack.Screen
              name='SigninScreen'
              component={SigninScreen}
            />
          </LoginStack.Navigator>
        )}
    </NavigationContainer>
  );
};

export default App;

0 个答案:

没有答案