Reputation: 4249
In my App.tsx
file I have 3 stacks as follows:
const AuthStack = createStackNavigator()
const AuthStackScreen = () => (
<AuthStack.Navigator>
<AuthStack.Screen name="Login" component={Login} options={{headerShown:false}}/>
</AuthStack.Navigator>
)
export const HomeStack = createStackNavigator()
export const HomeStackScreen = () => (
<HomeStack.Navigator>
<HomeStack.Screen name="Home" component={Home} options={{headerShown:false}}/>
<HomeStack.Screen name="TestScreen" component={TestScreen} />
</HomeStack.Navigator>
)
const RootStack = createStackNavigator()
const RootStackScreen = ({ isTokenValid }) => (
<RootStack.Navigator headerMode="none">
{ isTokenValid
? ( <RootStack.Screen name="App" component={HomeStackScreen} options={{headerShown:false}}/> )
: ( <RootStack.Screen name="Auth" component={AuthStackScreen} options={{headerShown:false}}/> )
}
</RootStack.Navigator>
)
Then I return the following:
return (
<NavigationContainer>
<RootStackScreen isTokenValid={props.isTokenValid}/>
</NavigationContainer>
);
In my Login.tsx
after successful login I want to navigate to HomeScreen that's under HomeStackScreen
so I call for navigation.navigate
as such:
const doLogin = ()=>{
issueToken(phoneNumber,otp).then(res => {
navigation.navigate('HomeStackScreen', { screen: 'Root' });
}).catch(err => alert(err));
}
However the navigation fails with this message:
The action 'NAVIGATE' with payload {"name":"HomeStackScreen","params":{"screen":"Root"}} was not handled by any navigator.
How can I navigate correctly between the two stacks?
Upvotes: 2
Views: 654
Reputation: 809
Your RootStack
returns only a single stack, HomeStackScreen
or AuthStackScreen
, just one of them at a time. In your case, you are on AuthStackScreen
, which means HomeStackScreen
doesn't render. That's why you cannot navigate to HomeStackScreen
.
In order to switch to HomeStackScreen, I think you need to update isTokenValid
which I don't know how do you config it but you can use either redux or context.
This may help: https://stackoverflow.com/a/61861273/1451753
Upvotes: 2