転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

ReactでSPA構築: react-router-domの基本的な使い方

ReactでSPA(シングルページアプリケーション)を作るとき、ほぼ必須になるのがreact-router-domです。
今回は基本的な使い方から、AppLayoutを使った共通レイアウトの作成方法までまとめていきます。


1. react-router-domとは?

react-router-domReact用のルーティングライブラリ です。

「ルーティング」とは、URLに応じてどのコンポーネントを表示するかを切り替える仕組みのこと。

Reactは単一ページ(SPA)なので、ページ遷移に見えても実際はコンポーネントの切り替えで画面を更新しています。その切り替えを管理してくれるのが react-router-dom です。


2.インストール方法

npm i react-router-dom

www.npmjs.com


3.よく使うコンポーネント・フック

コンポーネント/フック 役割
BrowserRouter 履歴管理付きのルーター。普通のWebアプリはこれを使う
Routes ルート定義をまとめる
Route URLパスとコンポーネントを紐付け
Link アプリ内リンク(<a>タグ代わり)
Outlet ネストされたルートの表示位置
Navigate コードからページ遷移(リダイレクト)
useParams URLパラメータ取得
useNavigate ページ遷移用の関数取得

 


4.ルーティング例

<Route index>は「親ルートにアクセスしたときのデフォルトの子ルート」を設定するための属性です。

上記の例では

  • /にアクセスすると自動的に<Home />が表示される
  • /reportにアクセスすると<Report />が表示される

という動きになります。


5.共通レイアウトを作るAppLayout

ルーティング例を見ていただくと、AppLayoutコンポーネントが親ルートとしてあり、Homeコンポーネント、ReportコンポーネントがAppLayoutコンポーネントの子ルートとして配置されています。

なぜAppLayoutを用意するのか?

  • ヘッダーやフッターなど全ページ共通UIをまとめて管理できる
  • <Outlet />で子ルートの表示位置を制御できる
  • 認証チェックやエラーハンドリングを一括で適用できる

コードの動き

  • <Outlet />の場所に子ルートのコンポーネントが差し込まれる
  • /<Home />/report<Report />が表示される
  • AppLayoutコンポーネントにヘッダーやナビゲーションを書けば常に共通で表示される

6.シングルページアプリケーション(SPA)とは

Single Page Applicationの略で、最初に読み込むHTMLは1枚だけで、ページ遷移はJavaScriptで中身だけ差し替える仕組みのWebアプリのことです。

MPA(Multi Page Application)との違い

特徴 SPA MPA
HTML読み込み 最初の1回のみ ページごとに読み込み
ページ切り替え JSで中身だけ切り替え ページ全体を再読み込み
表示速度 高速 遅め
SEO 対策が必要 標準で有利

Reactでページ切り替えを行うには、react-router-domなどのルーターライブラリを用いることで実現します。


7.まとめ

  • react-router-domはReactでのページ切り替えを管理するライブラリ
  • BrowserRouterRoutesRouteが基本
  • 共通UIはAppLayoutにまとめ、<Outlet />で子ルートを挿入
  • Route indexは親ルートのデフォルト表示を設定できる

Reactでアプリを作るとき、ルーターを正しく理解しておくと画面設計がグッと楽になりそうです。