Gatsby.jsにて、
error "window" is not available during server side rendering.
上記のエラー時の対処法になります。
サーバーサイドレンダリング(SSR)でwindowオブジェクトを取得している為のエラー
import React from 'react'
export default () => {
const loc = window.location.pathname //windowオブジェクト
return (
<div>
<p>{loc}</p>
</div>
)
}
上記のように、windowオブジェクトを使用しているとbuild時にエラーになります。
useState, useEffectを使うことで解決
import React, { useState, useEffect } from 'react'
export default () => {
const [loc, setLocationName] = useState('')
useEffect(() => {
setLocationName(window.location.pathname)
}, [])
return (
<div>
<p>{loc}</p>
</div>
)
}
useState, useEffectを使うことで、クライアントサイドで呼び出すことができるので、
error "window" is not available during server side rendering.
を解消できました。