【发布时间】:2020-09-12 07:31:10
【问题描述】:
我正在使用来自React conditionally render based on viewport size 的代码,但我不明白一件事: 我在 useEffect 中添加了一个控制台日志,当我在最后添加括号 [] 时,如下所示。这使得 useEffect 只运行一次并且似乎可以工作,因为控制台日志只在我刷新页面时显示一次。但是当我在浏览器上使用 React Developer Tools 时,状态 windowsSize 会根据我更新窗口大小的内容不断更新值。
const Navbar = () => {
const [windowSize, setwindowSize] = useState(window.innerWidth);
const updateWindowsSize = () => {
setwindowSize(window.innerWidth)
}
useEffect(() => {
console.log(windowSize)
window.addEventListener("resize", updateWindowsSize);
return () => window.removeEventListener("resize", updateWindowsSize);
},[]);
return (
<Fragment>
{windowSize>1000 ? (<NavDesk/>) : (<NavSmartPhone/>)}
</Fragment>
);}
【问题讨论】:
标签: javascript node.js reactjs react-hooks