I have the three navigators below, I am navigating to the DashBoard Screen after the login is completed but I have an issue when I want to logout from the DashBoard Screen, this.props.navigation.navigate('Login') is working fine but I want to clear the stack when signout button is pressed.
const DashBoardStackNavigator = createStackNavigator({
DashBoard: DashBoard,
Second:Second,
Third:Third
})
const BottomTabNavigator = createBottomTabNavigator({
DashBoardStackNavigator,
Account,
Report,
Members
}})
const AppStackNavigator = createStackNavigator({
Login: Login,
BottomTabNavigator: BottomTabNavigator
})
export default createAppContainer(AppStackNavigator)
I tried the following with no luck
const resetAction = StackActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'Login' })],
});
this.props.navigation.dispatch(resetAction);
Error: there is no route defined for key Login, Must Be one of DashBoard
Try this
I suggest you to use a
SwitchNavigator
, as suggested by the following official documentation: https://reactnavigation.org/docs/en/auth-flow.htmlIn your case, just replace the last StackNavigator with a SwitchNavigator:
Then just navigate to the Login:
It will automatically reset the stack when you switch between the bottomTabNavigator stack and the login stack, blocking all back actions between the two.