我正在努力解决我希望是一个简单的问题。我有多个 StackNavigator,每个都有不同的屏幕,除了 .navigate 之外,我还使用 Drawer 在主堆栈之间移动。像这样:
- 主堆栈
- 主屏幕(条目)
- 成员(member)资料
- 收件箱堆栈
- 收件箱屏幕
- 消息详情屏幕
在消息详细信息屏幕上,用户可以导航到个人资料。所以消息详细信息>配置文件。这很好用,就像在整个应用程序中一样。同一堆栈中的导航向前和向后都非常有用。我正在使用标准的 .navigate 继续前进。
this.props.navigation.navigate('MemberProfilePage')
但是,如果我点击后退按钮 - 或设置自定义后退按钮 - 用户将一直返回到主屏幕。如果我点击抽屉中的收件箱,屏幕仍将显示在消息详细信息上。
但我真的只想去:Message Details > Profile ... Profile goBack() to Message Details。
我已经尝试过默认的 goBack(),我尝试过像这样发送一个后退操作:
const backAction = NavigationActions.back({
key: 'ProfileScreen'
})
或
const backAction = NavigationActions.back({
key: null
})
感谢您的任何指导。
编辑:关于在 Drawer 中设置 backButton 的初步建议似乎有效。但这并不能解决问题。
我不想回到当前堆栈的初始屏幕。我想返回到我导航的屏幕,该屏幕位于不同的堆栈中。
最佳答案
在两个导航器上遇到同样的问题,返回总是会正确处理一个,而另一个错误,因为它会弹出到当前 StackNavigator
的根目录。
对我来说,解决方案是在两个 stackNavigators
中引用相同的屏幕,当您从两个不同的导航器导航到它时,会显示相同的屏幕,但会从不同的导航器加载导航器,一切都应该正常工作。希望这可以帮助。
关于react-native - goBack() 使用 React Navigation 到上一个/不同的堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45480755/