react-native - React Native Navigation:重置 Stack Navigator
问题描述
我正在使用 React Navigation 5。
在顶部我有一个抽屉导航器,带有以下屏幕:
<Drawer.Navigator>
<Drawer.Screen name="One" component={StackNavigatorOne} />
<Drawer.Screen name="Two" component={StackNavigatorTwo} />
<Drawer.Screen name="Three" component={StackNavigatorThree} />
<Drawer.Navigator/>
在 StackNavigatorOne 中,我有一个堆栈导航器,
<Stack.Navigator>
<Stack.Screen name="Screen1" component={Screen1} />
<Stack.Screen name="Screen2" component={Screen2} />
<Stack.Screen name="Screen2" component={Screen3} />
</Stack.Navigator>
从 Drawer Navigator 中,如果用户导航到Stack Navigator One
,然后移动到Screen2
,则 Screen2 保持在顶部。现在,如果用户打开抽屉导航并再次点击Stack Navigator One
,他将出现在屏幕 2 上,因为屏幕 2 在该堆栈的顶部。
但是,我需要的是,当用户单击 时DrawerScreen One
,它应该始终转到Screen1
of StackNavigatorOne
。StackNavigatorOne
无论用户在哪个屏幕上,当他点击抽屉时,是否可以重置屏幕DrawerScreen One
?
谢谢。
解决方案
最简单的解决方案是使用unmountOnBlur: true
.
unmountOnBlur: true
DrawerNavigator 的 screenOptions 上有一个道具。当用户从一个抽屉屏幕移动到另一个抽屉屏幕时,您可以使用它来卸载屏幕堆栈。
你可以像这样使用它:
<Drawer.Navigator
screenOptions={{
unmountOnBlur: true
}}
>
<Drawer.Screen name="One" component={StackNavigatorOne} />
<Drawer.Screen name="Two" component={StackNavigatorTwo} />
<Drawer.Screen name="Three" component={StackNavigatorThree} />
<Drawer.Navigator/>
推荐阅读
- sql - 对特定模式具有不同权限的 Postgresql 2 用户
- javascript - 在 React 中,为什么渲染方法绑定到组件实例而不是自定义方法?
- java - 如何阻止 Maven 将项目构建 JAR 安装到本地存储库
- sql - 如何使用字符串构建查询获取记录在古吉拉特语中有一个列标题?
- wordpress - Pagenavi 通过多字段搜索 wordpress
- powershell - Azure DevOps 代理上的 PowerShell 存储库问题
- python - 如何更改 x 轴上的数字(matplotlib)
- session - Laravel 7:如何清除 withErrors 会话
- mysql - 我是否允许在 Sequelize 中定义用户和服务器模型之间的多对多和一对多关系?
- java - 无法使用 maven 将类从一个模块导入另一个模块