【发布时间】:2021-07-27 23:39:59
【问题描述】:
我正在使用 React 在 useEffect 中进行一些异步数据获取,以处理页面刷新时的用户状态。我收到以下错误,根据谷歌结果,这似乎很常见:
警告:无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要解决此问题,请在 useEffect 清理函数中取消所有订阅和异步任务。
根据与此相关的所有文档,此错误是基于组件已卸载时可能更新的状态。对此建议的基本修复方法是在执行状态更新之前检查变量状态跟踪组件是否仍然挂载。
但是,我已经实施了建议的修复程序,但在页面刷新时仍然收到错误消息。非常感谢任何额外的指导。下面提供了精简的代码示例:
const [user, setUser] = React.useState(undefined);
const [isLoggedIn, setIsLoggedIn] = React.useState(false);
React.useEffect(() => {
let mounted = true;
axios.get('https://api.endpoint/session', { withCredentials: true }).then(session => {
if(mounted) {
setIsLoggedIn(true);
setUser(session.data);
}
});
return () => mounted = false;
}, [])
【问题讨论】:
-
在这篇文章中尝试回答,stackoverflow.com/questions/56450975/…
-
谢谢!我会试试看。
标签: reactjs asynchronous axios use-effect