1. HOME
  2. ブログ
  3. エンジニアリング
  4. Next.jsのApp Routerを理解して使ってみよう

BLOG

ブログ

エンジニアリング

Next.jsのApp Routerを理解して使ってみよう

Next.jsのApp Routerを理解して使ってみよう

はじめに

今回の章では、App Routerの仕組みを理解して使ってみましょう。

チュートリアルの全体像

本チュートリアルを通じて学べる内容は以下のようになります。

  1. Next.jsの開発環境をセットアップ
  2. 画面デザインしながら基礎を学ぼう
  3. App Routerを理解して使ってみよう
  4. Next.js+Postgres+PrismaでDB設計
  5. サーバコンポーネントでデータ取得
  6. サーバアクションでデータ変更
  7. Vercel Blobで画像アップロード実装
  8. Suspenseでローディングをリッチに
  9. Zodを使ってバリデーション実装
  10. useActionStateでローディング実装
  11. Auth.js v5で認証機能導入
  12. Route HandlersでAPIを設計

動画で学びたい方はこちらから!

ルート定義

まずは、ルート定義の方法について解説します。

Next.jsのApp Routerでは、決められたフォルダやファイルを作ると自動的にルーティングが定義される仕組みになっています。これをファイルベースルーティングと呼びます。

各フォルダがURLのセグメントを表し、page.tsxが実際にアクセスできるファイルになります。

本チュートリアルのルーティング定義は以下のようになっています。

app/
├── (auth)
   ├── layout.tsx
   ├── login
      └── page.tsx
   └── register
       └── page.tsx
├── (main)
   ├── dashboard
      └── page.tsx
   ├── layout.tsx
   ├── posts
      ├── [id]
         ├── edit
            └── page.tsx
         └── page.tsx
      ├── create
         └── page.tsx
      └── page.tsx
   ├── profile
      └── page.tsx
   └── users
       ├── [id]
          └── page.tsx
       └── page.tsx
├── favicon.ico
├── globals.css
├── layout.tsx
└── page.tsx

ルートグループ

ルートグループは、URLには反映されないディレクトリになります。

(main)のように()で囲むと作成することができます。

URLには反映せずに、ファイルをグループ化したい時に使用します。

レイアウト

レイアウト定義

App Routerでは、複数ルートに共通のレイアウトを作成できます。

layout.tsxファイルは以下のように定義します。

export default function Layout({ children }: { children: React.ReactNode }) {
  return (
    <div>
      <nav>{/*ここにナビゲーションメニュー*/}</nav>
      <main>{children}</main>
    </div>
  );
}

レイアウトの適用範囲

レイアウトは、同階層以下のファイルに適用されます。

適用されるレイアウトが複数ある場合、下図のように順番に反映されます。

ルートレイアウト

appディレクトリ直下のレイアウトファイルをルートレイアウトと呼びます。

こちらは必須のレイアウトファイルになります。

ルートレイアウトファイルでは、htmlタグとbodyタグの設定が必須になります。

以下がルートレイアウトファイルの例です。

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="ja">
      <body>{children}</body>
    </html>
  );
}

ダイナミックルート

ダイナミックルートとは、セグメントを動的に扱うようにできるルート定義です。

[id]のようにフォルダ名を [] で囲むと、リクエストされたパラメータに応じて画面を出し分けることができます。

実際に、本チュートリアルで定義されているダイナミックルートを見てみましょう。

ルート定義URL機能
app/posts/[id]/page.tsx/posts/1投稿詳細
app/posts/[id]/edit/page.tsx/posts/1/edit投稿編集
app/users/[id]/page.tsx/users/1オーナー詳細

ナビゲーション

ページを遷移するときは、Next.jsの Link コンポーネントを使います。

<Link
  href="/register"
>
  会員登録
</Link>

実践編

この続きを見るには?

ここから先は限定コンテンツです。 公式ラインに登録してくれた方のみ無制限で見放題になります!【完全無料】 以下のボタンから登録してください!

まとめ

以上、App Routerの仕組みについてでした。

次回は、データベースのセットアップや設計について学んでいきます。

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

関連記事