【发布时间】:2018-01-10 20:30:58
【问题描述】:
我正在努力解决我希望是一个简单的问题。我有多个 StackNavigator,每个都有不同的屏幕,除了 .navigate 之外,我还使用 Drawer 在主堆栈之间移动。像这样:
- 主堆栈
- 主屏幕(条目)
- 会员资料
- 收件箱堆栈
- 收件箱屏幕
- 消息详细信息屏幕
在消息详细信息屏幕上,用户可以导航到个人资料。所以消息详细信息>配置文件。这很好用,就像在整个应用程序中一样。同一堆栈中的导航向前和向后都非常有用。我正在使用标准的 .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 的初步建议似乎有效。但这并不能解决问题。
我不想回到当前堆栈的初始屏幕。我想返回到我导航的屏幕,该屏幕位于不同的堆栈中。
【问题讨论】:
-
您的应用的层次结构可能有问题。也许最好有 1 个堆栈而不是 2 个,然后从您需要的任何屏幕导航到您需要的任何屏幕,并通过“后退”按钮获得您需要的任何屏幕。
-
顺便说一下,这种行为是 React-Navigation 方面的错误。他们从......四月......(或类似的东西)开始一直在努力。
标签: react-native react-navigation