反应导航 5 props.navigation.replace("component");与 navigation.navigate() 的工作方式相同(后退按钮仍显示在 header 中)

React Navigation 5 props.navigation.replace("component"); works the same as navigation.navigate() (Back buttons still shown in header)

我正在尝试使用 react-navigation 5 替换功能,但它没有按预期工作。

假设有三个组成部分:

  1. set-domain.js,
  2. auth.js,
  3. some-func.js

我正在尝试的是:

set-domain.js 我设置域并执行:

props.navigation.navigate('Auth'); this navigates to auth.js:

Auth 我登录并执行:

props.navigation.replace('SomeFunc'); this should replace to some-func.js

问题是它不会替换,但会导航(我在 header 左侧有后退按钮,我可以使用后退按钮导航回来)。 HOWEVER,如果我在 set-domain.jsauth.js 之间使用替换,那么它适用于所有屏幕。

我做错了什么?感觉,我不明白 replace 实际上是如何工作的,但我在文档中找不到更多详细信息。

谢谢!

您正在从 set-domain 导航到 auth,所以您的堆栈是 [set-domain, auth]

当您使用替换时,您所做的只是将 auth 替换为 some-func,因此堆栈变为 [set-domain, some-func],这就是后退按钮仍然显示和导航的原因返回将带你到 set-domain.

如果您使用导航而不是替换堆栈将变为 [set-domain, auth, some-func]