StackActions reference
StackActions is an object containing methods for generating actions specific to stack-based navigators. Its methods expand upon the actions available in NavigationActions.
The following actions are supported:
- 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
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 { StackActions, NavigationActions } from 'react-navigation';
const resetAction = StackActions.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 { StackActions, NavigationActions } from 'react-navigation';
const resetAction = StackActions.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 - Key of the route to replace. If this is not defined, the most recent route will be replaced.
- 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 stack navigator supports animated replace (it currently does not).
push
The push action adds a route on top of the stack and navigates forward to it. This differs from navigate in that navigate will pop back to earlier in the stack if a route of the given name is already present there. push will always add on top, so a route can be present multiple times.
- routeName- string -- routeNameto push onto the stack.
- params- object - Screen params to merge into the destination route (found in the pushed screen through- this.props.navigation.state.params).
- action- (advanced) The sub-action to run in the child router, if the screen is a navigator.
import { StackActions } from 'react-navigation';
const pushAction = StackActions.push({  routeName: 'Profile',  params: {    myUserId: 9,  },});
this.props.navigation.dispatch(pushAction);pop
The pop action takes you back to a previous screen in the stack. The n param allows you to specify how many screens to pop back by.
- n- number - The number of screens to pop back by.
import { StackActions } from 'react-navigation';
const popAction = StackActions.pop({  n: 1,});
this.props.navigation.dispatch(popAction);popToTop
The popToTop action takes you back to the first screen in the stack, dismissing all the others. It's functionally identical to StackActions.pop({n: currentIndex}).
import { StackActions } from 'react-navigation';
this.props.navigation.dispatch(StackActions.popToTop());