我正在开发一个 React Native 应用程序,并使用 React 导航的 stacknavigator,这是我的场景:
- 我有一个组件A作为堆栈导航器,其中包含屏幕B(和其他)。
- 点击 A 中的按钮导航至 B
- 点击 B 中的按钮导航到 B(这次包含新数据)
- 点击第二个 B 的默认后退按钮导航到 A。这是我的问题,因为我想返回到第一个 B 检查我的 stacknavigator 配置,如果我错过了额外的配置,请纠正我,谢谢。
<AppStack.Navigator
initialRouteName="HOME"
screenOptions={stackStyle}>
<AppStack.Screen
name="HOME"
component={A}
/>
<AppStack.Screen
name="B"
component={B}
/>
....
B 内:
const {navigation} = this.props;
navigation.navigate('B', {new data for second B});
编辑:忘记提及第一个 B 从 WebView 触发第二个 B
最佳答案
在我看来,您应该处理要重新渲染的组件的状态。无论如何,如果您只需要导航到同一页面并保持返回,您可以替换:
navigation.navigate('B', { ... })
作者:
navigation.push('B', { ... })
当您使用push
时,您会创建一条新路线,因此当您从这条新路线返回时,它将导航到上一条路线。 navigate
将尝试转到现有路线,因此在您的情况下:路线 B 实际上已经存在。
关于React-Native Stack 导航器返回到具有相同初始路由名称的上一个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65531517/