使用React Navigation将goBack()转换为上一个/不同的堆栈

时间:2017-08-03 09:53:01

标签: react-native react-navigation

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

  • 主筹码
    • 主屏幕(条目)
    • 会员资料
  • 收件箱堆栈
    • 收件箱屏幕
    • 消息详细信息屏幕

在消息详细信息屏幕上,用户可以导航到“个人资料”。所以留言详情>轮廓。这很有效,就像整个应用程序一样。在同一堆栈中导航可以向前和向后工作。我正在使用标准.navigate继续前进。

this.props.navigation.navigate('MemberProfilePage')

但是,如果我点击后退按钮 - 或设置自定义后退按钮 - 用户将被一直带回主屏幕。如果我点击抽屉中的收件箱,屏幕仍将显示在消息详细信息中。

但我真的只想去:留言详情>配置文件...配置文件goBack()到消息详细信息。

我已经尝试过默认的goBack(),我尝试过调度这样的后退动作:

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

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

感谢任何方向。

编辑:关于在抽屉中设置backButton的初步建议似乎有效。但它并没有解决问题。

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

2 个答案:

答案 0 :(得分:1)

在DrawerNavigatorConfig中更改此道具

backBehavior='none' //default is initialRoute
  

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

https://reactnavigation.org/docs/navigators/drawer#DrawerNavigatorConfig

检查它是否正常工作......

答案 1 :(得分:0)

使用两个导航器时遇到相同的问题,然后返回总是正确地引导您,而导航到当前StackNavigator的根时则错误。

对我来说,解决方案是在两个stackNavigators中都引用相同的屏幕,当您从两个不同的导航器导航至该屏幕时,将显示相同的屏幕,但将从不同的导航器以及所有内容加载应该工作正常。希望这可以帮助。