【发布时间】:2021-02-13 05:38:02
【问题描述】:
我曾经通过写这样的东西来根据屏幕宽度渲染组件。
function App(props) {
const [mobile, setMobile] = useState(() => window.innerWidth < 576 ? true : false)
return (
<div>
{
mobile ? <ComponentA /> : <ComponentB />
}
</div >
);
}
但现在我正在使用 Next.js,由于 window.innerWidth 引用,这给了我几个错误。 我怎么能这样做? 提前致谢。
【问题讨论】:
-
欢迎来到 S.O.错误信息是什么?
-
NextJS 是同构的(在服务器和客户端上运行)。
window在服务器上未定义,因此您会看到一个错误。您需要进行检查,例如window && window.innerWidth < 576 -
window &&仍然会抛出服务器端。typeof可用于检查变量是否已安全声明,例如typeof window !== 'undefined' && window.innerWidth < 576 ? true : false