Hydration failed because the initial UI does not match
Next.jsでサーバーとクライアントのHTMLが一致しない場合に発生
概要
Hydration failedは、Next.jsでサーバーサイドレンダリング(SSR)されたHTMLと、クライアントサイドで生成されるHTMLが一致しない場合に発生するエラーです。
エラーメッセージ
Error: Hydration failed because the initial UI does not match what was rendered on the server.
Warning: Text content did not match. Server: "Hello" Client: "World"
原因
- Date/時刻の不一致: サーバーとクライアントで異なる時刻
- ブラウザ固有API: window, localStorageをSSR中に使用
- 条件付きレンダリング: サーバーとクライアントで異なる条件
- HTML構造の誤り: pタグ内にdivなど
解決策
1. useEffectでクライアントのみの処理
| |
2. dynamic importでSSRを無効化
| |
3. 時刻表示を統一
| |
4. suppressHydrationWarning
| |
5. HTML構造を修正
| |
6. localStorageの安全な使用
| |
JavaScript の他のエラー
この記事は役に立ちましたか?