我正在使用 React 导航抽屉 (v6.x),并且我有以下导航历史记录。
屏幕A -> 屏幕B -> 屏幕C
但是,当从 ScreenC 返回到 ScreenB 时,我需要传递一些参数。使用
navigation.goBack()
是不可能实现这一点的。如果我确实使用 navigation.navigate()
,我可以传递参数,但问题是,当回到 ScreenB 时,再次按返回将使我返回到 ScreenC 而不是 ScreenA。这是因为抽屉中的 navigation.navigate() 似乎并没有替换历史记录中的路线(就像在堆栈导航器中一样),它会推送一个新路线。
我该如何继续?
我正在考虑使用 navigation.navigate() 传递回调函数并在那里设置参数(就像本文中的那样)。这似乎可行,但反应导航文档强烈建议不要传递不可序列化的值。从这个意义上说,甚至出现了警告。
另一种是嵌套堆栈和抽屉导航器,但这也会产生其他问题。
如果您不使用手势导航,并且 ScreenA 始终显示在 ScreenB 之前,则可能的解决方案是在
ScreenB上使用
navigate('ScreenA')
而不是 goBack()
。
编辑:您还可以查看重置导航状态