React Navigation:有没有办法在 StackNavigator 中该屏幕的现有实例之上添加另一个屏幕实例?

React Navigation: Is there a way to add another instance of a screen on top of an existing instance of that screen in StackNavigator?

在我的 React Native 应用程序中,我有一个带有屏幕 ABC 的堆栈导航器。屏幕 A 显示给定用户的信息。我想在屏幕 A 上创建一个 switch user 按钮,它将加载屏幕 A 的另一个实例,但显示不同用户的信息。如果我使用 this.props.navigation.navigate('A', {user: user2}) 什么也不会发生,因为我已经在屏幕上 A,即。如果您尝试导航到同一屏幕,即使导航参数不同,它也不会这样做。

我想实际加载一个新的屏幕实例 A 而不是停留在屏幕上 A 并加载新用户数据的原因是当用户点击 change user 时,我想要新屏幕添加到堆栈时出现的视觉效果。

有人知道我该如何处理吗?

使用navigation.replace('A', {user: user2});替换栈顶。这是一个展示的世博会小吃:https://snack.expo.io/d7NkeEmcz

https://reactnavigation.org/docs/stack-actions/#push

您还可以使用 StackActions 将新屏幕推送到当前堆栈的顶部,根据上面的文档示例:

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

const pushAction = StackActions.push('screenA', { user: user2 });

navigation.dispatch(pushAction);