カスタム Document
カスタム Document
を使用すると、ページをレンダリングする際に使用される <html>
タグや <body>
タグを更新できます。
デフォルトの Document
を上書きするには、以下のように pages/_document
ファイルを作成します:
知っておくと良いこと:
_document
はサーバーサイドでのみレンダリングされるため、onClick
のようなイベントハンドラはこのファイルでは使用できません- ページを正しくレンダリングするためには
<Html>
,<Head />
,<Main />
,<NextScript />
が必須です
注意点
_document
で使用される<Head />
コンポーネントはnext/head
とは異なります。ここで使用する<Head />
はすべてのページで共通の<head>
コードのみに使用してください。<title>
タグなどの他のケースでは、ページやコンポーネントでnext/head
を使用することを推奨します<Main />
の外側にある React コンポーネントはブラウザによって初期化されません。ここにアプリケーションロジックやカスタム CSS(styled-jsx
など)を追加しないでください。すべてのページで共有コンポーネント(メニューやツールバーなど)が必要な場合は、代わりにレイアウトを参照してくださいDocument
は現在、getStaticProps
やgetServerSideProps
のような Next.js のデータフェッチングメソッドをサポートしていません
renderPage
のカスタマイズ
renderPage
のカスタマイズは高度な使用法で、CSS-in-JS のようなライブラリがサーバーサイドレンダリングをサポートする場合にのみ必要です。組み込みの styled-jsx
サポートでは必要ありません。
**このパターンを使用することは推奨しません。**代わりに、ページやレイアウトのデータをより簡単に取得できるApp Router への段階的な移行を検討してください。
知っておくと良いこと:
_document
内のgetInitialProps
はクライアントサイド遷移時には呼び出されません_document
のctx
オブジェクトはgetInitialProps
で受け取るオブジェクトと同等ですが、renderPage
が追加されています