react-navigation v6 相当于推送

问题描述 投票:0回答:2

我需要将同一屏幕的多个实例推送到堆栈,而

.navigate()
没有实现这一点。它只是导航到堆栈上已有的实例(与无操作相同)。
.push
已从
navigation
CommonActions
(以前的
StackActions
)中删除。

typescript react-native react-navigation
2个回答
0
投票

我自己找到了答案:

import { CommonActions } from "@react-navigation/native";

const state = navigation.getRootState().state;
const routes = state.routes;
routes.push({
  key: `ScreenName-${uniqueKey}`,
  name: "ScreenName",
  params: screenNameNavProps,
});
navigation.dispatch(CommonActions.reset({ ...state, index: state.index + 1, routes });

确保将

ScreenName
更改为您的屏幕名称,并为
uniqueKey
分配一个唯一的键(我使用了屏幕导航道具中的唯一键)。


0
投票

就我而言,这是一个打字问题。

push
方法仍然存在(参见这里)。

我正在输入这样的导航道具:

navigation: NavigationProp<RootNavigatorType>;

"@react-navigation/native";

进口

但是push方法在堆栈导航器中,所以我必须为此替换上面的方法:

navigation: NativeStackNavigationProp<MyCustomNavigatorType>;

"@react-navigation/native-stack"

进口
© www.soinside.com 2019 - 2024. All rights reserved.