据我所知, 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(),只有它返回的方法才是。
添加回答
举报
0/150
提交
取消