0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Next.jsのApp Routerにおけるredirectとrouterについて

Posted at

こんばんは。

今日は「Next.jsのApp Routerにおけるredirectとrouterについて」について説明いたします。

Next.jsのApp Routerにおけるredirectとrouterは、どちらもページ遷移に関連する機能ですが、使用する状況や動作方法に違いがあります。それぞれの違いについて具体例を挙げながら説明します。

redirect(リダイレクト)

概念:

  • redirectは、サーバーまたはクライアント側でURLを別のURLに変更する仕組みです。
  • 主にSEO対策、認証管理、URL変更などに使用されます。
  • ユーザーが特定のURLにアクセスした際、自動的に別のURLにリダイレクトされます。
  • ステータスコード(例: 301, 302)を伴う場合があり、SEOやユーザー体験に影響します。

特徴:

  • ページ遷移前にURLが変更されます。
  • 元のURLではなく、新しいURLにアクセスします。
  • サーバーサイドで行われる場合、ページがリロードされることがあります。
  • クライアントサイドでも実装可能ですが、主に事前処理に使用されます。

例:

// app/page.js
import { redirect } from 'next/navigation';

export default function Page() {
  const isLoggedIn = false;

  if (!isLoggedIn) {
    redirect('/login'); // ログインしていないユーザーをログインページにリダイレクト
  }

  return <h1>Welcome!</h1>;
}
  • ユーザーが/にアクセスした場合、redirectによって/loginに自動遷移。
  • ブラウザ上には元のURL/ではなく、/loginが表示されます。

router(ルーター)

概念:

  • routerは、クライアントサイドのナビゲーションを行うための機能です。
  • ページ遷移を実現しますが、URLが即座に更新され、サーバーリクエストを伴いません。
  • 主にボタンクリックやユーザー操作に基づいて動作します。
  • ページのリロードが発生せず、SPA(シングルページアプリケーション)として動作します。

特徴:

  • ユーザー操作(ボタンクリックやリンククリック)によってトリガーされます。
  • 現在のURLを保持しながら、別のURLに遷移します。
  • URLは変更されますが、ページの再読み込みは行われません。

例:

// app/page.js
'use client';

import { useRouter } from 'next/navigation';

export default function Page() {
  const router = useRouter();

  const handleNavigation = () => {
    router.push('/dashboard'); // ダッシュボードに遷移
  };

  return (
    <div>
      <h1>Welcome!</h1>
      <button onClick={handleNavigation}>Go to Dashboard</button>
    </div>
  );
}
  • ユーザーがボタンをクリックすると、router.pushによって/dashboardに移動。
  • ページはリロードされず、瞬時に切り替わります。

主な違い

項目 redirect(リダイレクト) router(ルーター)
動作場所 サーバー/クライアント両方で可能 クライアント専用
用途 条件に基づくURLの変更(認証チェック、SEOなど) ユーザー操作に基づくナビゲーション
ページリロード 場合によっては発生 発生しない(SPA方式で動作)
ステータスコード 301, 302などが使用可能 ステータスコードなしでURL遷移
使用例 初期ロード時の認証チェックによるリダイレクト ボタンクリックによるページ遷移

この2つの機能は目的とページ遷移の方式に違いがあるため、適切な状況で使い分けることが重要です。

今日は以上です。

ありがとうございました。
よろしくお願いいたします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?