У меня есть экран, вложенный в навигатор, который находится внутри навигатора.
const AppNavigator = createSwitchNavigator({
AuthLoading,
MainNavigator,
AuthNavigator
},
{
initialRouteName: 'AuthLoading'
});
const AuthNavigator = createStackNavigator({
VerificationNavigator,
OtpVerificationStack
},
{
initialRouteName: 'VerificationNavigator',
header: null,
headerMode: 'none'
});
AppNavigator сначала загружает AuthNavigator, затем из VerificationNavigator (второй экран) я перехожу к OtpVerificationStack, используя навигационные реквизиты.
const OtpVerificationStack = createSwitchNavigator({
OTPLoading,
SignupNavigator,
MainNavigator
},
{
initialRouteName: 'OTPLoading',
});
В OtpVerificationStack сначала загружается поток RegistrationNavigator.
const SignupNavigator = createStackNavigator({
FirstName,
LastName,
Email
},
{
header: null,
headerMode: 'none'
});
Экран FirstName состоит из входа в Google, после успешного входа я хочу перейти на MainNavigator или на его экран «Домой»,Я пытался
const resetAction = StackActions.reset({
index: 0,
key: OtpVerificationStack,
actions: [
NavigationActions.navigate({ routeName: 'Home' })
]
});
this.props.navigation.dispatch(resetAction);
Но, похоже, это не работает.Это ничего не делает!
РЕДАКТИРОВАТЬ: Я попытался установить токен в asyncstorage и на OTPLoadingscreen проверил токен.По сути, мне пришлось сбросить его обратно в OTPVerificationStack, что я мог сделать, сохранив key: null, но я не знаю, является ли это хорошим методом для подражания.