为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 useEffect 钩子不为每个渲染设置新的 setInterval ?

为什么 useEffect 钩子不为每个渲染设置新的 setInterval ?

jeck猫 2023-09-14 18:15:22
据我所知, useEffect() 钩子取代了 componentDidUpdate()、componentDidMount()、componentWillUnmount(),因此它被调用来代替这 3 个方法中的每一个。所以在我的代码中我有:(文档中有一个每秒递增的计时器)useEffect(()=>{ const intervalId = setInterval(()=>{  setTime((prevTime) => prevTime + 1) },1000) // return ()=>{ //   clearInterval(intervalId) // }},[])据我了解,将空数组作为第二个参数会使 componentDidUpdate() 不会调用 useEffect ,因此其他两个方法都会调用它。我想要我不明白的是为什么在 componentWillUnmount() 时不调用 useEffect - 我认为这是使用新计时器更新组件之前的时刻。最后为什么即使我取消注释/注释clearInterval()部分它也会以相同的方式工作?
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

useEffect 返回的方法clearInterval(intervalId)是您想要放入 componentWillUnmount() 中的代码的地方。用于清理。

从生命周期的角度来看,useEffect 的调用方式并不等同于 componentWillUnmount(),只有它返回的方法才是。


查看完整回答
反对 回复 2023-09-14
  • 1 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信