⊗jsnxPmLtPR 40 of 57 menu

NextJS における並列ルーティング

NextJS では、サイトの一部がリクエストされた URL に応じて異なるコンテンツを表示するように設定できます。 これは 並列ルーティングと呼ばれます。

例を見てみましょう。 次のようなサイトレイアウトがあるとします:

export default function RootLayout({children}) { return ( <html lang="en"> <body> <header> header </header> <main> {children} </main> <footer> footer </footer> </body> </html> ); }

ヘッダーに動的な情報を表示したいとします。 URL /users ではユーザー情報を表示するコンポーネントを、 URL /posts では投稿を表示するコンポーネントを出力したいとします。

このような並列ルーティングを行うには、 名前を @ 記号で始める特殊なフォルダを作成する必要があります。 例として、このフォルダを @info と名付けます。

このフォルダ内に 2 つのコンポーネントを配置します。 ユーザー表示用のものを /users/ フォルダに、 投稿表示用のものを /posts/ フォルダに配置します。 次のようなファイル構造になります:

  • /app/
    • /@info/
      • /users/
        • page.jsx
      • /posts/
        • page.jsx

次に、サイトレイアウト内に 挿入するための特別なコマンドを記述する必要があります。 そのためには、特別な 動的スロット を使用します。

まず、これを理解するために、レイアウト関数のパラメータを見てみましょう:

export default function RootLayout({children}) { return ( ); }

パラメータとしてオブジェクトが渡され、 そこからサイトコンテンツを children 変数に抽出していることに注意してください。

このオブジェクトには他のキーも存在する可能性があります。 それらは、名前が @ で始まるフォルダに対応します。

このケースでは @info フォルダがあるため、 URL に応じてユーザーまたは投稿コンポーネントのいずれかのテキストを含む 変数 info が利用可能になります。 この変数を取得しましょう:

export default function RootLayout({children, info}) { return ( ); }

これで、レイアウトのマークアップ内で 変数 info を出力できます。 この場所に、URL に応じて コンポーネントのいずれかのテキストが挿入されます:

export default function RootLayout({children, info}) { return ( <html lang="en"> <body> <header> <div> {info} </div> </header> <main> {children} </main> <footer> footer </footer> </body> </html> ); }

右サイドバーの動的スロットを作成してください。

左サイドバーの動的スロットを作成してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否