React native 如何在react navigation v5中重置状态?
如何使用prop重置(或创建新的导航历史记录)当前导航状态并创建新的导航状态 我有这样的路由器结构(见下面的例子),我想从React native 如何在react navigation v5中重置状态?,react-native,react-navigation,React Native,React Navigation,如何使用prop重置(或创建新的导航历史记录)当前导航状态并创建新的导航状态 我有这样的路由器结构(见下面的例子),我想从屏幕3导航到屏幕4。导航之后,我应该能够按后退按钮在历史中导航回去。在我的例子中,它应该是Tab2的默认屏幕(Screen5) NativeStackNavigator Screen1 BottomTabNavigator Tab1 Tab2 NativeStackNavigator Scre
屏幕3
导航到屏幕4
。导航之后,我应该能够按后退按钮在历史中导航回去。在我的例子中,它应该是Tab2
的默认屏幕(Screen5
)
NativeStackNavigator
Screen1
BottomTabNavigator
Tab1
Tab2
NativeStackNavigator
Screen5 (default) <- navigate here after back button was pressed
Screen4 <- to this route
Tab3
Tab4
Screen2
Screen3 <- from this route
其他信息:
package.json
"@react-navigation/bottom-tabs": "^5.5.1",
"@react-navigation/native": "^5.5.0",
"react-native-screens": "~2.2.0",
更新#1我宁愿在重置状态后保留历史记录 更新#2
通过使用以下示例,我能够完成此任务。感谢@satya164
navigation.navigate('Screen1'{
屏幕:“Tab2”,
参数:{
首字母:false,
屏幕:“屏幕4”,
},
});
您可以在route
的state
属性中指定子导航器的状态:
navigation.reset({
索引:1,
路线:[
{
名称:“屏幕1”,
声明:{
路由:[{name:'Tab2'}],
},
},
{
名称:“屏幕1”,
声明:{
路线:[
{
名称:'Tab2',
声明:{
路由:[{name:'Screen5'},{name:'Screen4'}]
},
},
],
},
},
],
})
但这将用全新的状态重置您的导航状态,卸载并重新安装一些屏幕。您可以保留如中所示的旧路线,但它仅适用于当前导航器,而不适用于子导航器
在这里,您似乎只需要导航
,而不是重置
。如果Screen5
是本机堆栈中的initialRouteName
,则:
navigation.navigate('Screen1'{
屏幕:“Tab2”,
参数:{
首字母:false,
屏幕:“屏幕4”,
},
});
第一个选项正在工作。另外,我不知道为什么,但是react native screens
的navigate
方法似乎有一个bug。调用navigate后,我的应用程序打开/关闭屏幕,删除所有内容并在默认屏幕上停止。我会把这个问题发布到Github上,请告诉我是否可以保持其他标签上的路由器状态与以前相同。只改变一半的状态?