老师,这里为什么不清空定时器就会变乱,添加了返回清空定时器的回调就正常了呢?
来源:3-6 useEffect语法讲解(模拟生命周期以及自定义Hook)

CoderVi
2023-06-07
写回答
3回答
-
河畔一角
2023-06-07
定时器里面的状态发生变化时,会重复创建定时器,添加清空以后能够保证内存不会遗漏,同时引用一致性。
10 -
CoderVi
提问者
2023-06-07
我明白了,这里老师说的变乱就是每次+2。这是因为React严格模式下useEffect被调用了两次导致的,添加了清除定时器的回调函数之后会把第一次的定时器给清除掉。useEffect会在组件渲染后执行,而且每次组件重新渲染时,都会先运行上一次useEffect中返回的清理函数,然后再执行新的useEffect。当组件卸载时,执行最后一次返回的清理函数,清除最后一次设定的定时器。
032023-06-12 -
河畔一角
2023-06-07
闭包的作用,清空的回调方法形成闭包对定时器有引用。不添加清空,定时器下一次进来获取的count不是最新的,因为可能没有更新,引用以后,能保证每次进来count都是最新的。
012023-06-07
相似问题