React Navigation 安装一个屏幕然后不接受从另一个屏幕再次传递的新参数

React Navigation mounts a screen then doesn't accept the new params passed again from another screen

我正在使用以下代码将一些参数从屏幕 A 传递到屏幕 B

props.navigation.navigate('ScreenB', {
        "id": "1",
        "name": "xyz"
});

在屏幕 B 上接收到参数,当我返回屏幕 A 并更新状态并将新参数传递给导航函数时,屏幕 B 上未接收到新参数,而是保留传递给的旧参数它。

我知道它已首先安装,因此反应导航不会重新安装它并且 React Navigation Lifecycle 有生命周期事件,但我不明白 useFocusEffect 挂钩在哪里用于传递新参数并重新呈现屏幕 B

提前致谢

更改 ScreenB 的路由参数不会专门触发重新渲染。就像你说的,你需要一个 useFocusEffect 挂钩来更新 ScreenB 每当重新聚焦发生时。然后你可以读取路由参数。

尝试添加到 ScreenB:

import { useIsFocused } from 'react-navigation/native'

...

// inside component

const isFocused = useIsFocused()

useEffect(() => {
  if (isFocused) {
    // do something with params
  }
}, [isFocused])