Итак, я в настоящее время на Navigation v4, используя SwitchNavigator. Я хочу перейти на v5, но не могу заставить его работать. У меня есть 3 стека, AuthStack (стековый навигатор), TabScreens (это нижний навигатор), Условия (просто экран), и моя конфигурация v4 такова:
const createRootNavigator = (signedIn = false, terms) => {
return createAppContainer(
createSwitchNavigator(
{
Auth: { screen: AuthStack, path: 'auth' },
App: { screen: TabScreens, path: 'app' },
Terms: { screen: Terms }
},
{
initialRouteName: !signedIn ? !terms ? 'Terms' : 'Auth' : 'App',
headerMode: 'none',
defaultNavigationOptions: {
gestureEnabled: false
}
}
))
}
Итак, когда впервые отображается экран Условия вверх и нажмите Next, затем я автоматически перехожу к Auth, и если я нажимаю кнопку android back, приложение закрывается, потому что стек Auth является основным стеком. Хотя этого не происходит на v5. У меня ошибка, что The action 'NAVIGATE' with payload {"name":"Auth"} was not handled by any navigator. Do you have a screen named 'Auth'?
Моя текущая конфигурация v5 выглядит следующим образом:
const AuthStack = createStackNavigator();
const Auth = () => (
<AuthStack.Navigator
initialRouteName={"SignIn"}>
<AuthStack.Screen
name={"SignIn"}
component={SignIn}
screenOptions={{ gestureEnabled: false }}
options={{ headerShown: false }}
/>
</AuthStack.Navigator>
)
const TermsStack = createStackNavigator();
const TermsScreen = () => (
<TermsStack.Navigator
initialRouteName={"Terms"}>
<TermsStack.Screen
name={"Terms"}
component={Terms}
screenOptions={{ gestureEnabled: false }}
options={{ headerShown: false }}
/>
</TermsStack.Navigator>
)
const RootScreens = () => {
const signedIn = mySDK.isAuthorized();
const terms = myApi.getTerms();
return (
<NavigationContainer>
{!signedIn ?
<>
{!terms ?
<TermsScreen />
:
<Auth />
}
</>
:
// <App />
<Auth />
}
</NavigationContainer>
)
};
export default RootScreens;
В чем именно проблема?