/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 で対象の値の一覧を返します。全部を列挙する必要はなく、指定しなかったものは最初のアクセス時に生成されます。