【发布时间】:2021-08-05 01:06:03
【问题描述】:
当我运行他的代码时,我在控制台中收到以下警告。
警告:无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要解决此问题,请在 useEffect 清理函数中取消所有订阅和异步任务。
这是我的代码:
const [userDetail, setUserDetail] = React.useState('');
const personalDetails = (user_id) => {
axios
.get(`http://localhost:3001/users/${user_id}`, { withCredentials: true })
.then((response) => {
const personalDetails = response.data;
setUserDetail(response.data);
})
.catch((error) => {
console.log(" error", error);
});
};
React.useEffect(() => {
if (user_id) {
personalDetails(user_id);
}
}, [user_id]);
如果我删除 useEffect 调用,此错误就会消失。这里有什么问题?
【问题讨论】:
-
让
useEffectwrap 你的 api 调用代码,而不是相反。 -
因为它是异步的并且满足竞态条件。阅读:medium.com/hackernoon/…
-
如果你在组件函数中使用它,还需要用
useCallback钩子包装函数。如果有使用它的子组件,它有助于 REACT 记住它并避免不必要的重新渲染。
标签: reactjs