useEffect第二个参数为空数组时,相当于mount,为什么改变浏览器宽高还会执行多次?
来源:3-6 useEffect语法讲解(模拟生命周期以及自定义Hook)

皮小西
2023-06-12
useEffect(()=>{
window.addEventListener('resize',onResize)
return()=>{
window.removeEventListener('resize',onResize)
}
},[])
老师您好,我对于这段代码还是不太理解,useEffect第二个参数为空数组时,相当于mount,也就是说只在首次渲染时才会执行(只是触发一次)。那为什么手动改变浏览器宽高,还会再次执行useEffect中的代码呢?不是只会渲染一次么?
谢谢!
写回答
1回答
-
你这儿理解有个误区,我们说的首次渲染指的是useeffect里面的代码会执行一次,也就是通过window添加事件会执行一次。但是你移动浏览器窗口的时候,并不是useeffect执行的,是里面的事件监听了浏览器窗口改变,是事件执行的。 里面不是有一个resize事件吗
032023-06-12
相似问题