The Goal
Using react navigation, navigate from a screen in a navigator to a screen in a different navigator.
More Detail
If I have the following Navigator structure:
- Parent Navigator
- Nested Navigator 1
- screen A
- screen B
- Nested Navigator 2
- screen C
- screen D
- Nested Navigator 1
how do I go from screen D under nested navigator 2, to screen A under nested navigator 1? Right now if I try to navigation.navigate
to screen A from screen D there will be an error that says it doesn't know about a screen A, only screen C and D.
I know this has been asked in various forms in various places on this site as well as GitHub(https://github.com/react-navigation/react-navigation/issues/983, https://github.com/react-navigation/react-navigation/issues/335#issuecomment-280686611) but for something so basic, there is a lack of clear answers and scrolling through hundreds of GitHub comments searching for a solution isn't great.
Maybe this question can codify how to do this for everyone who's hitting this very common problem.
You can use the third parameter of
navigate
to specify sub actions.For example, if you want to go from screen D under nested navigator 2, to screen A under nested navigator 1:
Also, be sure to check the Common Mistakes if you are using nested navigators.
React Navigation v3:
Navigation.navigate
now takes one object as the parameter. You set the stack name then navigate to the route within that stack as follows...Where 'YOUR_STACK' is whatever your stack is called when you create it...
LoggedOut
is the stack name where signIn screen is placed.@ZenVentzi, Here is the answer for multi-level nested navigators when
Nested Navigator 1
hasNested Navigator 1.1
.We can just inject
NavigationActions.navigate()
several times as needed.