Next.js: Hydration failed because the initial UI does not match
Next.js ハイドレーションエラーの解決方法
概要
サーバーサイドレンダリングとクライアントサイドレンダリングの結果が一致しない場合に発生するエラーです。
エラーメッセージ
Hydration failed because the initial UI does not match what was rendered on the server.
原因
- 日時の違い: サーバーとクライアントで異なる時刻
- ブラウザAPI使用: windowやdocumentをSSR時に使用
- ランダム値: Math.random()やuuidなど
- 条件付きレンダリング: サーバーとクライアントで異なる結果
解決策
1. useEffectでクライアント専用コード
| |
2. dynamic importでSSR無効
| |
3. suppressHydrationWarning
| |
4. mounted状態チェック
| |
よくある間違い
- typeof window !== ‘undefined’ でも初期レンダリングは同じにする必要
- ブラウザ拡張機能がDOMを変更
Next.js の他のエラー
この記事は役に立ちましたか?