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