useEffect()函数只运行一次,存储稍后更新(React钩子)



我有一个应用程序,我在其中提取存储,如下所示:

const user_data = useSelector(state => state.user_data);

在那之后,我有一个useEffect()函数,它将某些状态对象分配给从商店接收的数据。

useEffect(() => {
setName(user_data.name);
}, []);

这家商店是由类似的东西设置的:

await dispatch(save_user_info(res.data.response));
props.history.push("/setting/dashboard");

现在的问题是,当useEffect第一次运行时,user_data是空的。之后会填充它,但useEffect只运行一次。

在更新存储之前,页面会重定向到新组件,因此当页面首先加载时,它没有存储数据。

如果返回了存储中的数据,如何使useEffect再次运行?

如果保持useEffect的第二个参数为空,则它将在每次组件更新时运行。

useEffect(() => {
setName(user_data.name);
});

在您的情况下,如果这个数组[](为空(中提到的变量发生了更改,它就会运行。

或者你可以做这个

useEffect(() => {
setName(user_data.name);
},[user_data]); // or props.user_data , howsoever you can refer to that

相关内容

  • 没有找到相关文章

最新更新