投稿

[今さら始める Next.js マスター #2] App Routerとルーティングを理解する

Next.js App Routerの基本、動的ルート、レイアウト、Loading UI、Error Boundaryの考え方をまとめます。

[今さら始める Next.js マスター #2] App Routerとルーティングを理解する

App Routerの基本

Next.jsのApp Routerでは、appディレクトリのフォルダ構成がそのままURLになります。設定ファイルでルートを一つずつ登録するのではなく、必要な場所にフォルダとpageファイルを作るだけでページを追加できます。

1
2
3
4
app/
  page.tsx          -> /
  about/page.tsx    -> /about
  blog/page.tsx     -> /blog

動的ルート

記事詳細やユーザープロフィールのように、URLの一部が変わるページでは動的ルートを使います。

1
app/blog/[slug]/page.tsx

この構成では、/blog/nextjs-routingのようなURLを受け取り、slugを使って該当するデータを表示できます。

レイアウトで共通UIをまとめる

layout.tsxを使うと、複数ページで共通するヘッダー、ナビゲーション、サイドバーなどをまとめられます。

1
2
3
4
5
6
7
8
export default function BlogLayout({ children }) {
  return (
    <main>
      <aside>Blog menu</aside>
      {children}
    </main>
  );
}

ページごとに同じUIを繰り返し書かずに済むため、アプリが大きくなっても構造を保ちやすくなります。

Loading UIとError Boundary

loading.tsxを置くと、データ取得中の表示をルート単位で用意できます。error.tsxを置くと、その範囲で発生したエラーを画面として扱えます。

ファイル 役割
page.tsx ページ本体
layout.tsx 共通レイアウト
loading.tsx 読み込み中のUI
error.tsx エラー時のUI

Route Groups

URLには出したくない管理用のまとまりには、(group)形式のRoute Groupsが便利です。

1
2
3
app/
  (marketing)/about/page.tsx
  (dashboard)/settings/page.tsx

見た目や責務ごとにファイルを整理しながら、URLはシンプルに保てます。

この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。