[英]Why does window.innerWidth returns 477px even if the window has a smaller width?
[英]why does useEffect run once the window.innerWidth changes even though the second param in it is an empty array
这段代码中的useEffect
每次window大小变化时都会运行,但是useEffect
中的第二个参数是一个空数组,我认为只要第二个参数与上次相比没有变化, useEffect
就不会运行
import React from "react" export default function WindowTracker() { const [windowWidth, setWindowWidth] = React.useState(window.innerWidth) React.useEffect(() => { window.addEventListener("resize", function() { setWindowWidth(window.innerWidth) }) }, []) return ( <h1>Window width: {windowWidth}</h1> ) }
不是useEffect
运行,而是注册的事件监听器。 useEffect
确实运行一次并注册一次事件侦听器。 但随后,调用了侦听器回调。
如果你在 useEffect 中使用 console.log,你会看到它实际上只会运行一次。 基本上,您已经为 resize 事件设置了一次事件侦听器。 但是您仍然拥有已注册的事件侦听器,它按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.