getInitialProps
補足:
getInitialProps
は従来のAPIです。代わりにgetStaticProps
またはgetServerSideProps
の使用を推奨します。
getInitialProps
は、ページのデフォルトでエクスポートされるReactコンポーネントに追加できるasync
関数です。サーバーサイドとページ遷移中のクライアントサイドの両方で実行されます。関数の結果はprops
としてReactコンポーネントに渡されます。
補足:
- サーバーレンダリング時に
getInitialProps
から返されるデータはシリアライズされます。getInitialProps
から返されるオブジェクトは、平坦なObject
であり、Date
、Map
、Set
を使用していないことを確認してください。- 最初のページ読み込み時、
getInitialProps
はサーバーでのみ実行されます。その後、next/link
コンポーネントまたはnext/router
を使用して別のルートに移動する際にクライアントでも実行されます。- カスタム
_app.js
でgetInitialProps
が使用され、遷移先のページがgetServerSideProps
を使用している場合、getInitialProps
もサーバーで実行されます。
コンテキストオブジェクト
getInitialProps
は、以下のプロパティを持つcontext
と呼ばれる単一の引数を受け取ります:
名前 | 説明 |
---|---|
pathname | 現在のルート、/pages 内のページのパス |
query | URLのクエリ文字列(オブジェクトとしてパース) |
asPath | ブラウザに表示される実際のパス(クエリを含む)の文字列 |
req | HTTPリクエストオブジェクト(サーバー側のみ) |
res | HTTPレスポンスオブジェクト(サーバー側のみ) |
err | レンダリング中にエラーが発生した場合のエラーオブジェクト |
注意点
getInitialProps
はpages/
のトップレベルファイルでのみ使用でき、ネストされたコンポーネントでは使用できません。コンポーネントレベルのネストされたデータフェッチについては、App Routerの探索を検討してください。- ルートが静的か動的かに関わらず、
getInitialProps
からprops
として返されるデータは、最初のHTMLでクライアントサイドで調べることができます。これは、ページが正しくハイドレートされるようにするためです。props
で渡すデータに、クライアントで利用できるべきではない機密情報が含まれていないことを確認してください。