React Routerとは?
React Routerは、Reactアプリケーションでルーティングを管理するための一連のナビゲーションコンポーネントです。
これにより、URLに基づいて異なる画面やデータをユーザーに表示することができます。
React Routerのインストール方法
React Routerを使用するためには、まずライブラリをプロジェクトにインストールする必要があります。
npmを使用する場合、ターミナルで以下のコマンドを実行します。
npm install react-router-dom
React Routerの基本的な使い方
React Routerを使った基本的なルーティングを見てみましょう。以下は、ホームページとユーザーページを切り替える簡単な例です。
import React from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
function Home() {
return <h2>ホーム</h2>;
}
function User() {
return <h2>ユーザー</h2>;
}
function AppRouter() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">ホーム</Link>
</li>
<li>
<Link to="/user/">ユーザー</Link>
</li>
</ul>
</nav>
<Route path="/" exact component={Home} />
<Route path="/user/" component={User} />
</div>
</Router>
);
}
export default AppRouter;
この例では、<BrowserRouter>
コンポーネントを使ってルーティングを設定しています。
また、<Link>
コンポーネントを使ってリンクを作成し、<Route>
コンポーネントで各ページのルートを定義しています。
【具体例】パラメータを使用したルーティング
URLにパラメータを含めて、その値に基づいて表示内容を変えることもできます。以下はその例です。
import React from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
function User({ match }) {
return <h2>ユーザーID: {match.params.id}</h2>;
}
function AppRouter() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/user/1">ユーザー1</Link>
</li>
<li>
<Link to="/user/2">ユーザー2</Link>
</li>
</ul>
</nav>
<Route path="/user/:id" component={User} />
</div>
</Router>
);
}
export default AppRouter;
この例では、:id
というパラメータをURLに含めています。このパラメータの値は、match.params.id
で取得することができます。
【具体例2】React Routerを使った簡単なウェブアプリの作成
React Routerを使って、簡単なウェブアプリを作ってみましょう。
このウェブアプリでは、「ホーム」「記事」「プロフィール」という3つのページを作ります。
プロジェクト作成
まず、Reactアプリケーションを作成します。
npx create-react-app react-router-app
cd react-router-app
npm start
必要なパッケージのインストール
まず、React Routerを使うために、react-router-dom
パッケージをインストールします。
npm install react-router-dom
App.jsの編集
次に、App.js
を編集してルーティングを設定します。
import React from 'react';
import { BrowserRouter as Router, Route, Link, Routes } from 'react-router-dom';
// ページのコンポーネント
import Home from './Home';
import Article from './Article';
import Profile from './Profile';
function App() {
return (
<Router>
<div>
<nav>
<ul>
<li><Link to="/">ホーム</Link></li>
<li><Link to="/article">記事</Link></li>
<li><Link to="/profile">プロフィール</Link></li>
</ul>
</nav>
{/* 各ページへのルート設定 */}
<Routes>
<Route path="/" element={<Home />} />
<Route path="/article" element={<Article />} />
<Route path="/profile" element={<Profile />} />
</Routes>
</div>
</Router>
);
}
export default App;
import React from 'react';
import { BrowserRouter as Router, Route, Link, Routes } from 'react-router-dom';
// ページのコンポーネント
import Home from './Home';
import Article from './Article';
import Profile from './Profile';
function App() {
return (
<Router>
<div>
<nav>
<ul>
<li><Link to="/">ホーム</Link></li>
<li><Link to="/article">記事</Link></li>
<li><Link to="/profile">プロフィール</Link></li>
</ul>
</nav>
{/* 各ページへのルート設定 */}
<Routes>
<Route path="/" element={<Home />} />
<Route path="/article" element={<Article />} />
<Route path="/profile" element={<Profile />} />
</Routes>
</div>
</Router>
);
}
export default App;
ここでは、<BrowserRouter>
コンポーネントを使ってルーティングを設定しています。
また、<Link>
コンポーネントを使ってリンクを作成し、<Route>
コンポーネントで各ページのルートを定義しています。
各ページのコンポーネント作成
最後に、各ページのコンポーネントを作成していきます。
touch src/Home.js
touch src/Article.js
touch src/Profile.js
それぞれ、以下のようにコンポーネントを作成します。
Home.js
import React from 'react';
function Home() {
return <h2>ホーム</h2>;
}
export default Home;
Article.js
import React from 'react';
function Article() {
return <h2>記事</h2>;
}
export default Article;
Profile.js
import React from 'react';
function Profile() {
return <h2>プロフィール</h2>;
}
export default Profile;
これで完成です。
ブラウザでアプリを開き、リンクをクリックしてページが切り替わることを確認しましょう。
(npm start
実行後、通常は http://localhost:3000/
でアクセスできます)
React Routerのメリット
- コンポーネントベース: Reactのコンポーネントと同じように、ルーティングもコンポーネントベースで管理できます。
- 動的ルーティング: ユーザーの操作に応じて動的にルーティングを変更できるため、ユーザーに合わせたページを表示できます。
- パラメータとクエリ: URLにパラメータやクエリを含めることができるため、ユーザーの操作に応じて表示内容を変更できます。
React Routerの使いどころ
React Routerは、以下のような場面で活用できます。
- ユーザーの操作に応じて表示内容を変更したい場合
- URLにパラメータやクエリを含めて、表示内容を変更したい場合
- ページ遷移をアニメーションで演出したい場合
上記のような場面で、React Routerを活用することで、ユーザーにとって使いやすいアプリケーションを作ることができます。
React Routerの注意点
同じパスを持つルート
React Routerは、複数の<Route>
が同じパスにマッチした場合、すべてのルートをレンダリングします。
このため、あるパスに対して1つだけルートをレンダリングさせたい場合は、<Switch>
コンポーネントを使用してください。
import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom";
<Router>
<Switch>
<Route path="/user/:id" component={User} />
<Route path="/" component={Home} />
</Switch>
</Router>
ルートの順序
React Routerは、<Switch>
内のルートを上から順に評価します。
import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom";
<Router>
<Switch>
<Route path="/user/:id" component={User} />
<Route path="/user/new" component={NewUser} />
<Route path="/" component={Home} />
</Switch>
</Router>
ここで注意したいのが、上記の例では、/user/new
は/user/:id
と同じパスを持っています。
このため、/user/new
にアクセスした場合、/user/:id
のルートが先に評価され、/user/new
のルートは評価されません。
このような場合は、/user/new
のルートを<Switch>
内の一番上に移動させることで、/user/new
のルートが先に評価されるようにします。
import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom";
<Router>
<Switch>
<Route path="/user/new" component={NewUser} />
<Route path="/user/:id" component={User} />
<Route path="/" component={Home} />
</Switch>
</Router>
こうすることで、/user/new
にアクセスした場合、/user/new
のルートが先に評価されるようになります。
まとめ
React Routerは、Reactのコンポーネントベースでルーティングを管理できるライブラリです。
React Routerを使うことで、ユーザーの操作に応じて表示内容を変更したり、URLにパラメータやクエリを含めて表示内容を変更したりすることができます。
また、React Routerは、<Switch>
コンポーネントを使うことで、ルートの順序を変更することができます。
React Routerを用いて、ユーザーにとって使いやすいアプリケーションを作っていきましょう!
React を効率的に身につける勉強法は?
React には興味があっても、プログラミング学習をはじめたばかりであれば、以下のような疑問を持つかもしれません。
- Reactエンジニアとして活躍するために何をすればいい?
- 何から勉強すればいいんだろう?
- 絶対に転職を成功させるには?
React は習得が比較的難しいため、勉強法の選び方を間違うと時間・労力・お金が無駄になってしまいます…。
そのため、こちらの記事を参考に、ご自身に最適な学習方法を選んでみませんか?