Using the navigation key
The
key
parameter comes up repeatedly across different navigation functions. Let's take a look at a summary of its use cases:
Usage with the
navigate
call
If no key is provided,
StackRouter
will behave as follows:
StackRouter
will jump to the existing route, along with setting the new parameters.
StackRouter
will push it onto the stack
If, however, you want to push several instances of the same route, you can do so by providing a unique
key
parameter each time you call
navigate
, or you can use the
push
action available on
StackRouter
. See the related
RFC
for more background.
Note: the behavior of
navigate
without a
key
is significantly different in the 1.x series of releases. Read more about it
here
.
Usage with
reset
When resetting,
key
is also optional and can be a string or
null
. If set, the navigator with the given key will reset. If
null
, the root navigator will reset. You can obtain a route's navigator key by calling
this.props.navigation.dangerouslyGetParent().state.key
. Reason why the function is called
dangerouslyGetParent
is to warn developers against overusing it to eg. get parent of parent and other hard-to-follow patterns.