我正在使用以下代码将一些参数从屏幕A传递到屏幕B
props.navigation.navigate('ScreenB', {
"id": "1",
"name": "xyz"
});
在屏幕B上接收到参数,当我返回到屏幕A并更新状态并将新参数传递到导航功能时,在屏幕B上未接收到新参数,而是保留了传递给它的旧参数。
我知道它已经被首先挂载,因此反应导航不会重新挂载它,并且React Navigation Lifecycle存在生命周期事件,但是我不知道useFocusEffect
钩在哪里以便通过新的参数并重新渲染屏幕B
预先感谢
答案 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])