对我的应用程序中的内存泄漏做出反应



我搜索了很多关于这个错误的信息,但React继续报告它:

"react_devtools_backend.js:2430警告:无法对未安装的组件执行react状态更新。这是一个非操作,但它表明应用程序中存在内存泄漏。若要修复此问题,请取消useEffect清理函数中的所有订阅和异步任务">

我的代码如下:

const [books, setBooks] = useState([])
useEffect(() => {
let isMounted = false
BookAPI.getAll().then(books => {
if (!isMounted) setBooks(books)
})
return () => {
isMounted = true
}
}, [])

对于我搜索的内容,我正在正确地进行清理,但我不明白为什么错误仍然存在。

编辑:

也尝试过,但没有任何变化:

let [books, setBooks] = useState([])
let isRendered = useRef(false)
useEffect(() => {
BookAPI.getAll().then(books => {
if (!isRendered.current) setBooks(books)
return null
})
return () => {
isRendered.current = true
}
}, [])

对于遇到同样问题的人,我的解决方案是使用useLayoutEffect而不是useEffect。

最新更新