【发布时间】:2022-02-09 13:40:24
【问题描述】:
随着屏幕尺寸的变化,尝试获取准确的窗口值。如何将窗口值放入 useState()?由于 useState 不能在条件中使用,并且 window 在 useEffect 之外未定义?
const isSSR = typeof window !== "undefined";
const [windowSize, setWindowSize] = React.useState({
width: isSSR ? 1200 : window.innerWidth,
height: isSSR ? 800 : window.innerHeight,
});
function changeWindowSize() {
setWindowSize({ width: window.innerWidth, height: window.innerHeight });
}
React.useEffect(() => {
window.addEventListener("resize", changeWindowSize);
return () => {
window.removeEventListener("resize", changeWindowSize);
};
}, []);
return windowSize;
}
【问题讨论】: