我不太明白useEffect清理功能是如何工作的。因为无论我做什么我都会收到警告:
警告:无法对未挂载的组件执行反应状态更新。这是一个非操作,但它表示您的应用程序中存在内存泄漏。若要修复,请取消useEffect清理函数中的所有订阅和异步任务。
这是我的代码:
useEffect(() => {
setLoading(true)
// Get position list
const getPositionList = db.collection('lists').doc('positions').get(
如何修复错误:Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.
这是密码:
useEffect(() => {
let ignore = false;
我知道,当useRef被更改时,组件就不会被重新呈现,不管怎样,您能解释一下每个版本到底发生了什么吗?在useEffect函数中,如果组件是unMounted,则isCan.current将设置为true。当它被卸载时,调度函数和几个状态将不会中断(如果在try块中有条件)。以这种方式工作,但是您能告诉我为什么不使用状态钩子(isCancelled)运行所有这些代码吗?
with useRef:因此,当组件卸载时,isCan.current将立即设置为true。如果取消发生在If条件之前,则调度和某些挂钩不会更改,因为isCan现在是isCan
with useState:当组件卸载时,isC
有没有人遇到像我一样的问题?我在useEffect中创建了一个异步函数,并调用它。在异步函数中,我有一个while循环,并在while循环内使用await,但似乎不起作用,console.log(productsList.length)将打印0,并且当我尝试使用productsList.map返回一些组件时,也不返回任何内容
useEffect(() => {
async function callProduct(){
let a=5
while (a>0) {
const item =