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 应用程序中,我有一个带有屏幕 A
、B
和 C
的堆栈导航器。屏幕 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);
在我的 React Native 应用程序中,我有一个带有屏幕 A
、B
和 C
的堆栈导航器。屏幕 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);