你好吗。这是这个问题的场景。假设有 2 个屏幕可以简化操作。
- 进入 A 画面。useEffect of A 屏幕调用。
- 从 A 屏幕导航到 B 屏幕
从 B 导航回 A 屏幕。此时,不会调用 useEffect。
function CompanyComponent(props) { const [roleID, setRoleID] = useState(props.user.SELECTED_ROLE.id) useEffect(()=>{ // this called only once when A screen(this component) loaded, // but when comeback to this screen, it doesn't called setRoleID(props.user.SELECTED_ROLE.id) }, [props.user]) }
所以当再次回到 A 屏幕时,屏幕 A 的更新状态保持不变(不从props加载)
我没有更改屏幕 B 中的 props.user。但我认为 const [roleID, setRoleID] = useState(props.user.SELECTED_ROLE.id)
至少应该调用这条线。
我正在使用 redux-persist。我认为这不是问题。对于导航,我使用这个
// to go first screen A, screen B
function navigate(routeName, params) {
_navigator.dispatch(
NavigationActions.navigate({
routeName,
params,
})
);
}
// when come back to screen A from B
function goBack() {
_navigator.dispatch(
NavigationActions.back()
);
}
当屏幕出现时,我可以使用任何回调吗?我的代码有什么问题?
谢谢