IT-Q

/blog/なんとか のような動的なURLは、どう作りますか。

フォルダ名を角括弧で囲みます。app/blog/[slug]/page.tsx とすれば、その配下のURLをこのページが処理します。値は params から受け取りますが、現在は await が必要です。

面接官が見ているのはファイル規約の基本。ここを Pages Router 流で覚えていると噛み合わない。

よくある答えと、面談でどう見られるか

  • app/blog/[slug]/page.tsx のように、フォルダ名を角括弧で囲む
    App Router はフォルダ名です。値は params から受け取ります。
  • app/blog/[slug].tsx のように、ファイル名を角括弧で囲む
    それは Pages Router の流儀です。App Router はフォルダ名で表現します。
  • next.config にルーティング定義を書く
    設定ファイルには書きません。ファイル構造で表現します。
  • app/blog/(slug)/page.tsx のように丸括弧で囲む
    丸括弧はルートグループで、URL から消えます。動的ルートは角括弧です。

模範解答

フォルダ名を角括弧で囲みます。app/blog/[slug]/page.tsx とすれば/blog/なんとか がこのページで処理されます。

値は params から受け取ります。現在は Promise なので await が必要です。

  export default async function Page({
    params,
  }: { params: Promise<{ slug: string }> }) {
    const { slug } = await params
  }

よく使うページをビルド時に作っておきたい場合は、generateStaticParams で対象の値の一覧を返します。全部を列挙する必要はなく、指定しなかったものは最初のアクセス時に生成されます。