Skip to main content
Version: 3.x

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:

  • if a route with the given name already exists in the state, StackRouter will jump to the existing route, along with setting the new parameters.
  • if no such route exists, 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.

Usage with replace

With the replace navigation action, key is a required parameter used for identifying the route to be replaced. If you use the helper function this.props.navigation.replace, we will automatically substitute the key of the current route.

Usage with goBack

Please refer to the goBack docs for a detailed explanation.