process.browser
でクラス名などのDOM操作(今回はダークモードの状態変更)をしようとしたところ、Hydrationエラーが。
Error: Hydration failed because the initial UI does not match what was rendered on the server.
状態管理をRecoilからuseState
に変更してもうまく動かず。でも原因は、process.browser
にあったらしい。
useEffect
に変更したらあっさり治った。
import { useEffect, useState } from 'react'
useEffect(() => {
//DOM操作
}, []);
けどuseEffect
はimport
を増やして関数作らなきゃいけないのが手間で、なおかつ"副作用"というのがなんとなく気持ち悪くてprocess.browser
を使っていた。
でも、ちゃんとprocess.browser
とuseEffect
の違い理解しないといけないのかも。