useEffect第二个参数为空数组时,相当于mount,为什么改变浏览器宽高还会执行多次?

来源:3-6 useEffect语法讲解(模拟生命周期以及自定义Hook)

皮小西

2023-06-12


​
    useEffect(()=>{
        window.addEventListener('resize',onResize)
        return()=>{
            window.removeEventListener('resize',onResize)
        }
    },[])

老师您好,我对于这段代码还是不太理解,useEffect第二个参数为空数组时,相当于mount,也就是说只在首次渲染时才会执行(只是触发一次)。那为什么手动改变浏览器宽高,还会再次执行useEffect中的代码呢?不是只会渲染一次么?
谢谢!

写回答

1回答

河畔一角

2023-06-12

你这儿理解有个误区,我们说的首次渲染指的是useeffect里面的代码会执行一次,也就是通过window添加事件会执行一次。但是你移动浏览器窗口的时候,并不是useeffect执行的,是里面的事件监听了浏览器窗口改变,是事件执行的。 里面不是有一个resize事件吗

0
3
皮小西
非常感谢!
2023-06-12
共3条回复

React18+TS 通用后台管理系统解决方案落地实战

全面提升React高阶技能,灵活驾驭各类后台管理系统开发痛点

624 学习 · 226 问题

查看课程