Я пытаюсь создать свое первое приложение React Native, но у меня возникла проблема с навигацией. В моем приложении есть три экрана в навигаторе стека.
Home
Login
User (User screen again is a Tab Navigator with three screens UserProfile, UserHome, UserSettings)
Мой навигатор
const Navigator = StackNavigator(
{
Home: {
screen: HomeScreen
},
Login: {
screen: LoginScreen,
},
User: {
screen: UserTabNavigator,
}
},{
initialRouteName: 'Home'
},
{
navigationOptions: () => ({
headerTitleStyle: {
fontWeight: 'normal',
},
}),
}
);
Первоначальный маршрут - Дом, поэтому приложение открывается на главном экране, после чего нажатие на Вход приводит к экрану входа в систему.
Теперь в моем компоненте входа в систему после успешной аутентификации я перенаправляюсь на экран пользователя.
Когда я перехожу на экран пользователя, я вижу кнопку «Назад», и ее нажатие возвращает меня на экран входа в систему.
Я хотел сбросить стек навигации при успешной аутентификации и установить User screen в качестве корневого, поэтому в функции входа я добавил
const resetAction = NavigationActions.reset({
index: 0,
actions: [
NavigationActions.navigate({ routeName: 'User' })
]
});
this.props.navigation.dispatch(resetAction);
Это работает, так как сейчас я не вижу кнопку «Назад», но после входа в систему я вижу странную анимацию смахивания назад и на короткое время вижу главный экран, а затем перенаправляется на экран пользователя.
Что я делаю неправильно?