React native 如何在react navigation v5中重置状态?

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

如何使用prop重置(或创建新的导航历史记录)当前导航状态并创建新的导航状态

我有这样的路由器结构(见下面的例子),我想从
屏幕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上,请告诉我是否可以保持其他标签上的路由器状态与以前相同。只改变一半的状态?