【发布时间】:2021-07-28 14:10:42
【问题描述】:
我有 useEffect 回调,我正在从多个 API 获取一些数据。为此,我使用Promise,我的代码如下所示:
useEffect(() => {
const fetchAllData = async () => {
const resourceOne = new Promise((resolve) => {
// fetching data from resource one and changing some states
})
const resourceTwo = new Promise((resolve) => {
// fetching data from resource two and changing some states
})
const resourceThree = new Promise((resolve) => {
// fetching data from resource three and changing some states
})
await Promise.all([resourceOne, resourceTwo, resourceThree])
.then(() => {
// changing some states
})
}
return fetchAllData()
},[])
在这种情况下我如何理解 useEffect 在获取所有数据之前卸载然后给我一个警告
警告:无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要解决此问题,请在 useEffect 清理函数中取消所有订阅和异步任务。
那么如何编写正确的清理代码来避免这个警告呢?
【问题讨论】:
-
你能用
AbortController吗? stackoverflow.com/a/65805464/5385381
标签: reactjs promise use-effect