コース一覧
Next.jsフルスタック:サーバー・データ取得・API
動的ルート

Next.jsフルスタック:サーバー・データ取得・API

Server ComponentsとClient Components、use client、サーバーfetch、asyncコンポーネント、動的ルート、params、notFound、キャッシュ、Route Handler、GET・POST API、Server Actions、フォームを扱う全24レッスンのフルスタックコースです。fleamaの商品取得と出品機能をNext.js内へ実装します。

1
Server / Client Components
01. サーバーで動く部品10分
02. Server Components15分
03. use clientの宣言15分
04. どちらに置くか15分
05. 境界をまたぐ合成15分
06. 境界の設計15分
07. つくる - 部品の仕分け20分
08. 第4章クイズ15分
2
データ取得と動的ルート
01. サーバーでfetch15分
02. asyncコンポーネント15分
03. 動的ルート15分
04. paramsを受け取る15分
05. notFoundで404にする15分
06. キャッシュのきほん10分
07. 検索をサーバーで15分
08. つくる - サーバー取得化20分
09. 第5章クイズ15分
3
API Routesとフォーム
01. Route Handler15分
02. GET APIを作る15分
03. POST APIを作る15分
04. Server Actionsの触り15分
05. フォーム実装15分
06. つくる - 受け口の完成20分
07. 第6章クイズ15分

動的ルート

角かっこのフォルダが URL を受け取る

商品の数だけファイルは作れない

fleama の商品詳細は /items/1 /items/2 /items/3 と続きます。フォルダ名がそのまま URL になる決まりなので、素直に考えると商品の数だけフォルダが要ることになります。商品が1000件になったら破綻します。

Next.js はここに逃げ道を用意しています。フォルダ名を角かっこで囲むと、その部分が「なんでも受け付ける場所」になります。

プレーンテキスト

app/items/[id]/page.tsx

このファイル1つで、/items/1 も /items/2 も /items/9999 も表示されます。角かっこの中の id は自分で決める名前で、次のレッスンで値を取り出すときに使います。

静的な部分が優先される

app/items/new/page.tsx と app/items/[id]/page.tsx が両方あるとき、/items/new はどちらでしょうか。答えは new のほうです。角かっこの無い、はっきり書かれたフォルダが先に見られます。

出品ページを /items/new に置いても、商品 id が new の商品と取り違えられる心配はありません。

名前の付け方

角かっこの中の名前は、その値の意味に合わせます。商品なら [id]、ユーザー名なら [username]、記事のスラッグなら [slug] です。この名前がそのまま受け取るときのキーになるので、あとから読む人が困らないものを選びます。

演習

app/items/[id]/page.tsx を書いて、どの商品 id でも同じページが出ることを確かめます。

ヒント

フォルダ名の角かっこはファイル名の一部です。中身のコードには出てきません

app/page.tsx の一覧は書いてあるので触りません

まだ商品ごとの中身は出しません。次のレッスンで id を受け取ります

app/items/[id]/page.tsx
layout.tsx
app/page.tsx
プレビュー

できているか

  • 一覧のリンクが並んでいる
  • /items/2 で詳細ページが出る
  • /items/4 でも同じファイルが使われる
  • [id] のページを export default している
エディタを読み込んでいます