【5章】Next.jsのチュートリアルをやってみた

Next.js

 

これはNext.jsの公式チュートリアルの5. Navigating Between Pages に関するメモです

 

前章のメモ

 

Next.jsの公式チュートリアルの該当ページ

 

Learn Next.js: Navigating Between Pages | Next.js
Learn how to use the component to navigate between pages.

 

学ぶこと

 

  1. next/link コンポーネントの使い方
  2. usePathname() フックを使用したアクティブなリンクの表示
  3. Next.js内でのナビゲーションの動き

 

<Link>コンポーネント

 

Next.jsでは<Link>コンポーネントを使用してリンクを表示させることができます。

実際に使ってみて理解を深めていきましょう!

 

/app/ui/dashboard/nav-links.tsx で、Linkコンポーネントをインポートします。

そして、<a>タグを<Link>コンポーネントへ置き換えます

 

npm run dev でサーバを起動させ、http://localhost:3000/dashboard にアクセスします。

サイドバーをクリックしてページ遷移してみましょう!

 

ページがリロードされることなく、遷移していることがわかります

<a>タグを使用した場合は画面全体を更新して遷移するのでこれが<Link>コンポーネントの特徴になります。

コード上は<a>タグと<Link>コンポーネントは似ていますが、アプリ上の動きが異なるわけです

 

コード分割とプリフェッチ

 

Next.jsではファイルベースルーティングを採用しているため、ページとファイルが対応しています

各ページごとにコードが分割されており、特定のページのエラーが出てもアプリ全体に影響はありません。

 

また、コードが分割されていることで画面リロードなしの遷移も実現しています。

Linkコンポーネントを含むページを表示した際にリンク先のページをバックグラウンドで読み込んでプリフェッチ)クライアント側でキャッシュしておきます。

実際に遷移するときにはキャッシュから読み込み、画面全体ではなく対象の部分のみを再レンダリングします。

この仕組みによって、画面がリロードされず瞬時に遷移することができます

 

詳しいナビゲーションの仕組みは↓のドキュメントをご覧ください

 

アクティブなリンクを表示する

 

一般的なアプリではアクティブリンク(どのページにいるのか)を表示します。

URLからユーザーのパスを取得する必要があり、Next.jsではusePathname()を使います

 

/app/ui/dashboard/nav-links.tsx で実際に使ってみましょう

実装方針としては、

  1. usePathname() はフックなので、サーバコンポーネント⇒クライアントコンポーネントへ変更するために、1行目に ‘use client’; を追加する
  2. usePathname をインポートする
  3. パスを変数にいれる
  4. clsxライブラリでアクティブなリンクをサイドバー上で青色に変える

 

 

サーバを起動させ、http://localhost:3000/dashboard にアクセスします。

サイドバーをクリックしてページ遷移してみると、クリックした部分が青色で強調されます!

 

 

次章のメモ

 

コメント

タイトルとURLをコピーしました