页面使用ssr渲染的时候,react的生命周期中render()阶段负责创建虚拟dom,进行diff算法,更新dom树,render及之前的阶段,并没有将组件渲染为实际的dom节点,所以不能获取window对象,如果是下面这样是可以拿到window对象的:
官方解决办法
在使用document/window组件的父组件写成:
import dynamic from 'next/dynamic'
const DynamicComponent = dynamic(() => import('../components/hello'))
function Home() {
return (
<div>
<Header />
<DynamicComponent />
<p>HOME PAGE is here!</p>
</div>
)
}
export default Home
这样即可解决。