NavigationActions reference
All NavigationActions return an object that can be sent to the router using navigation.dispatch() method.
Note that if you want to dispatch react-navigation actions you should use the action creators provided in this library.
The following actions are supported:
- Navigate - Navigate to another route
- Back - Go back to previous state
- Set Params - Set Params for given route
- Init - Used to initialize first state if state is undefined
Within a stack, you can also use:
- Reset - Replace current state with a new state
- Replace - Replace a route at a given key with another route
- Push - Add a route on the top of the stack, and navigate forward to it
- Pop - Navigate back to previous routes
- PopToTop - Navigate to the top route of the stack, dismissing all other routes
The action creator functions define toString() to return the action type, which enables easy usage with third-party Redux libraries, including redux-actions and redux-saga.
Navigate
The Navigate action will update the current state with the result of a Navigate action.
- routeName- String - Required - A destination routeName that has been registered somewhere in the app's router
- params- Object - Optional - Params to merge into the destination route
- action- Object - Optional - (advanced) The sub-action to run in the child router, if the screen is a navigator. Any one of the actions described in this doc can be set as a sub-action.
- key- String - Optional - The identifier for the route to navigate to. Navigate back to this route if it already exists
import { NavigationActions } from 'react-navigation';
const navigateAction = NavigationActions.navigate({
  routeName: 'Profile',
  params: {},
  action: NavigationActions.navigate({ routeName: 'SubProfileRoute' }),
});
this.props.navigation.dispatch(navigateAction);
Reset
The Reset action wipes the whole navigation state and replaces it with the result of several actions.
- index- number - required - Index of the active route on- routesarray in navigation- state.
- actions- array - required - Array of Navigation Actions that will replace the navigation state.
- key- string or null - optional - If set, the navigator with the given key will reset. If null, the root navigator will reset.
import { NavigationActions } from 'react-navigation';
const resetAction = NavigationActions.reset({
  index: 0,
  actions: [NavigationActions.navigate({ routeName: 'Profile' })],
});
this.props.navigation.dispatch(resetAction);
How to use the index parameter
The index param is used to specify the current active route.
eg: given a basic stack navigation with two routes Profile and Settings.
To reset the state to a point where the active screen was Settings but have it stacked on top of a Profile screen, you would do the following:
import { NavigationActions } from 'react-navigation';
const resetAction = NavigationActions.reset({
  index: 1,
  actions: [
    NavigationActions.navigate({ routeName: 'Profile' }),
    NavigationActions.navigate({ routeName: 'Settings' }),
  ],
});
this.props.navigation.dispatch(resetAction);
Replace
The Replace action replaces the route at the given key with another route.
- key- _string - required - Key of the route to replace.
- newKey- _string - Key to use for the replacement route. Generated automatically if not provided.
- routeName- _string -- routeNameto use for replacement route.
- params- object - Parameters to pass in to the replacement route.
- action- object - Optional sub-action.
- immediate* - boolean - Currently has no effect, this is a placeholder for when- StackNavigatorsupports animated replace (it currently does not).
Back
Go back to previous screen and close current screen. back action creator takes in one optional parameter:
- key- string or null - optional - If set, navigation will go back from the given key. If null, navigation will go back anywhere.
import { NavigationActions } from 'react-navigation';
const backAction = NavigationActions.back({
  key: 'Profile',
});
this.props.navigation.dispatch(backAction);
SetParams
When dispatching SetParams, the router will produce a new state that has changed the params of a particular route, as identified by the key
- params- object - required - New params to be merged into existing route params
- key- string - required - Route key that should get the new params
import { NavigationActions } from 'react-navigation';
const setParamsAction = NavigationActions.setParams({
  params: { title: 'Hello' },
  key: 'screen-123',
});
this.props.navigation.dispatch(setParamsAction);