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])
我正在使用以下代码将一些参数从屏幕 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])