跳至主要内容
版本: 6.x

StackActions 参考

StackActions 是一个包含用于生成特定于基于堆栈的导航器的操作方法的对象。它的方法扩展了 CommonActions 中可用的操作。

支持以下操作

replace

replace 操作允许替换 导航状态 中的路由。它接受以下参数

  • name - string - 已在某处注册的路由的目标名称。
  • params - object - 传递给目标路由的参数。
import { StackActions } from '@react-navigation/native';

navigation.dispatch(
StackActions.replace('Profile', {
user: 'jane',
})
);

如果要替换特定路由,可以添加一个 source 属性,它引用路由键,以及一个 target 属性,它引用导航状态键

import { StackActions } from '@react-navigation/native';

navigation.dispatch({
...StackActions.replace('Profile', {
user: 'jane',
}),
source: route.key,
target: navigation.getState().key,
});

如果 source 属性显式设置为 undefined,它将替换焦点路由。

push

push 操作将路由添加到堆栈顶部并向前导航到该路由。这与 navigate 不同,因为如果堆栈中已存在给定名称的路由,navigate 将返回到堆栈中的较早位置。push 将始终添加到顶部,因此路由可以多次存在。

  • name - string - 要推送到堆栈的路由名称。
  • params - object - 传递到目标路由的屏幕参数。
import { StackActions } from '@react-navigation/native';

const pushAction = StackActions.push('Profile', { user: 'Wojtek' });

navigation.dispatch(pushAction);

pop

pop 操作将带您返回堆栈中的先前屏幕。它接受一个可选参数 (count),允许您指定要返回多少个屏幕。

import { StackActions } from '@react-navigation/native';

const popAction = StackActions.pop(1);

navigation.dispatch(popAction);

popToTop

popToTop 操作将带您返回堆栈中的第一个屏幕,并关闭所有其他屏幕。它在功能上与 StackActions.pop({n: currentIndex}) 相同。

import { StackActions } from '@react-navigation/native';

navigation.dispatch(StackActions.popToTop());