Reactjs Can';t使用setInterval对未安装的组件执行React状态更新

Reactjs Can';t使用setInterval对未安装的组件执行React状态更新,reactjs,react-hooks,setinterval,Reactjs,React Hooks,Setinterval,我尝试在setInterval函数中设置状态,结果得到: 无法对未安装的组件执行React状态更新 有什么帮助吗 useEffect(() => { NewTimer() }, []) const NewTimer = () => { let count = 0 let timer = setInterval(() => { count++ if (count === 10) { clearInterval(timer); }

我尝试在
setInterval
函数中设置状态,结果得到:

无法对未安装的组件执行React状态更新

有什么帮助吗

useEffect(() => {
  NewTimer()
}, [])

const NewTimer = () => {
  let count = 0
  let timer = setInterval(() => {
    count++
    if (count === 10) {
      clearInterval(timer);
    }
    setCounter(count)
  }, 1000);
}

这可能是因为虽然您的组件已卸载,但您的间隔仍在运行(我不知道是否已卸载,但可能已卸载)。我建议你这样做:

useffect(()=>{
让计数=0
let timer=setInterval(()=>{
计数++
如果(计数=10){
清除间隔(计时器);
}
设置计数器(计数)
}, 1000);
return()=>{
清除间隔(计时器);
}
}, [])

组件卸载时,将调用
useffect
回调中返回的函数。代码只是在卸载组件时清除间隔。

将组件完整源代码添加到此处help@AlexisZerdis那么请接受我的回答,这样将来的读者可以看到什么是有效的