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

时间:2020-06-15 13:34:32

标签: javascript reactjs react-native react-navigation react-navigation-stack

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

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

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

我知道它已经被首先挂载,因此反应导航不会重新挂载它,并且React Navigation Lifecycle存在生命周期事件,但是我不知道useFocusEffect钩在哪里以便通过新的参数并重新渲染屏幕B

预先感谢

1 个答案:

答案 0 :(得分:1)

更改ScreenB的路线参数不会专门触发重新渲染。就像您说的那样,每当发生重新聚焦时,都需要一个useFocusEffect钩子来更新ScreenB。然后,您可以阅读路线参数。

尝试添加到ScreenB

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

...

// inside component

const isFocused = useIsFocused()

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