5

我正在尝试将 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;
4

0 回答 0