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