Что вам нужно сделать, так это сделать вкладку List
собственным навигатором стека. Таким образом, у вас будет это
export default function App() {
return (
<SafeAreaProvider>
<NavigationContainer>
{isSignedIn ? (
<Tab.Navigator initialRouteName='TrackListNavigator'>
<Tab.Screen name='TrackListNavigator' component={TrackListNavigator} />
<Tab.Screen name='Create' component={TrackCreateScreen} />
<Tab.Screen name='Account' component={AccountScreen} />
</Tab.Navigator>
) : (
<Stack.Navigator>
<Stack.Screen name='Signup' component={SignupScreen} />
<Stack.Screen name='Signin' component={SigninScreen} />
</Stack.Navigator>
)}
</NavigationContainer>
</SafeAreaProvider>
);
}
Итак, вместо вкладки, переходящей к TrackListScreen
, она вместо этого перейдет к новому навигатору стека, который содержит этот экран, такой как
export default function TrackListNavigator() {
return (
<Stack.Navigator initialRouteName='TrackListScreen'>
<Stack.Screen name='TrackListScreen' component={TrackListScreen} />
</Stack.Navigator>
)
}
Таким образом, когда вы не вошли в систему, у вас будет доступ только к экранам Signup
и Signin
. После входа в систему вы окажетесь на TrackListScreen
с доступом к любому другому Stack.Screen
, который вы добавите к TrackListNavigator
.