使带有参数的navigation.navigate()就像反应导航抽屉中的navigation.goBack()一样

问题描述 投票:0回答:1

我正在使用 React 导航抽屉 (v6.x),并且我有以下导航历史记录。

屏幕A -> 屏幕B -> 屏幕C

但是,当从 ScreenC 返回到 ScreenB 时,我需要传递一些参数。使用

navigation.goBack()
是不可能实现这一点的。如果我确实使用
navigation.navigate()
,我可以传递参数,但问题是,当回到 ScreenB 时,再次按返回将使我返回到 ScreenC 而不是 ScreenA。这是因为抽屉中的 navigation.navigate() 似乎并没有替换历史记录中的路线(就像在堆栈导航器中一样),它会推送一个新路线。

我该如何继续?

我正在考虑使用 navigation.navigate() 传递回调函数并在那里设置参数(就像本文中的那样)。这似乎可行,但反应导航文档强烈建议不要传递不可序列化的值。从这个意义上说,甚至出现了警告。

另一种是嵌套堆栈和抽屉导航器,但这也会产生其他问题。

react-native react-navigation
1个回答
0
投票

如果您不使用手势导航,并且 ScreenA 始终显示在 ScreenB 之前,则可能的解决方案是在

ScreenB
上使用
navigate('ScreenA')
而不是 goBack()

编辑:您还可以查看重置导航状态

© www.soinside.com 2019 - 2024. All rights reserved.