reactjs - useEffect() 函数只运行一次,store 稍后更新(React hooks)
问题描述
我有一个应用程序,我正在获取这样的商店:
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");
现在的问题是,第一次运行user_data
时是空的。useEffect
之后它会被填充,但useEffect
只运行一次。
页面在 store 更新之前被重定向到新组件,所以当页面第一次加载时,它没有 store 数据。
useEffect
如果从商店返回数据,我该如何再次运行?
解决方案
如果您将 useEffect 的第二个参数保留为空,它将在每次组件更新时运行。
useEffect(() => {
setName(user_data.name);
});
在您的情况下,如果此数组 [](为空)中提到的变量发生更改,它将运行。
或者你可以这样做
useEffect(() => {
setName(user_data.name);
},[user_data]); // or props.user_data , howsoever you can refer to that
推荐阅读
- html - mac邮件上电子邮件签名中的背景颜色
- networking - 是否可以将 Openvswitch 网桥与两个不同的接口绑定?
- node.js - heroku 的 typescript 部署失败
- html - Angular - 从焦点中排除 div
- sql-server - 排除意义相同但值不同的行
- python - loc[ ] 是 Pandas 中的一个函数吗
- django - Django Microsoft AD 身份验证
- node.js - Node.js 多个请求同时返回一个结果
- git - 切换到管道内的另一个分支?
- java - 哪些 ClientConfiguration 设置最适合建立 Elasticsearch 连接