React native 使用React导航将goBack()返回到上一个/不同的堆栈

React native 使用React导航将goBack()返回到上一个/不同的堆栈,react-native,react-navigation,React Native,React Navigation,我正在努力解决一个简单的问题。我有多个StackNavigator,每个StackNavigator都有不同的屏幕,除了.navigate,我还使用一个抽屉在主堆栈之间移动。像这样: const backAction = NavigationActions.back({ key: 'ProfileScreen' }) 主栈 主屏幕(输入) 会员资料 收件箱堆栈 收件箱屏幕 消息详细信息屏幕 在消息详细信息屏幕上,用户可以导航到配置文件。因此,信息详细信息>配置文件。这非常有效,

我正在努力解决一个简单的问题。我有多个StackNavigator,每个StackNavigator都有不同的屏幕,除了.navigate,我还使用一个抽屉在主堆栈之间移动。像这样:

const backAction = NavigationActions.back({
  key: 'ProfileScreen'
})
  • 主栈
    • 主屏幕(输入)
    • 会员资料
  • 收件箱堆栈
    • 收件箱屏幕
    • 消息详细信息屏幕
在消息详细信息屏幕上,用户可以导航到配置文件。因此,信息详细信息>配置文件。这非常有效,整个应用程序都是如此。在同一个堆栈中进行导航无论是向前还是向后都非常有效。我正在使用标准。导航前进

this.props.navigation.navigate('MemberProfilePage')
但是,如果我点击后退按钮,或者设置一个自定义后退按钮,用户将一直返回主屏幕。如果我点击抽屉里的收件箱,屏幕上仍然会显示邮件的详细信息

但我真的只想去:消息详细信息>个人资料。。。配置文件goBack()到消息详细信息。

我尝试了默认的goBack(),我尝试了如下方式调度back操作:

const backAction = NavigationActions.back({
  key: 'ProfileScreen'
})

谢谢你的指点

编辑:关于在抽屉中设置backButton的最初建议似乎可行。但这并不能解决问题


我不想回到当前堆栈的初始屏幕。我想回到我导航的屏幕,它位于不同的堆栈中

在您的抽屉中更改此道具

backBehavior='none' //default is initialRoute
backBehavior-后退按钮是否会导致切换到初始状态 路线?如果是,则设置为初始路由,否则设置为。默认为 初始路由行为


检查它是否工作…

在两个导航器上有相同的问题,返回时总是在一个导航器上正确,在另一个导航器上错误,因为它会弹出到当前
堆栈导航器的根目录


对我来说,解决方案是在两个
stackNavigators
中引用相同的屏幕,当您从两个不同的导航器导航到它时,将显示相同的屏幕,但它将从不同的导航器加载,并且一切都应该正常工作。希望这有帮助

那道具使用了默认的初始路线,你说得对。但将其改为“无”没有任何影响。同样的体验也在发生。在我的应用程序中,还有一个地方,我试图返回到屏幕,而之前的屏幕位于不同的堆栈中。在这种情况下,它不会转到initialRoute,而是转到同一堆栈中的初始屏幕。基本上,它只是关闭屏幕,而不是返回到它所导航的屏幕(在不同的堆栈中),而是返回到自己堆栈中的初始屏幕。应用程序的层次结构可能有问题。也许最好使用1个堆栈,而不是2个堆栈,只需导航到您需要的任何屏幕,从您需要的任何屏幕,并通过“后退”按钮获得您需要的任何屏幕。顺便说一句,这种行为是导航端的一个bug。他们一直在努力,因为。。。四月。。。(或类似的事情)。