react-router-dom
インストール
npx create-react-app [任意のアプリ名]
cd [任意のアプリ名]
npm install react-router-dom
src/App.js
import './App.css';
import Home from './Home';
import About from './About';
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';
function App() {
return(
<>
<BrowserRouter> ※1
<Link to="/">Home</Link> ※2
<Link to="/about">About</Link>
<Routes> ※3
<Route path="/" element={<Home />} /> ※4
<Route path="/about" element="{<About />}" />
<Route path="*" element={<h1>NOT FOUND PAGE</h1>} /> ※5
</Routes>
</BrowserRouter>
</>
);
}
export default App;
※1 … ひとつのアプリでBrowserRouterは1回しか書いてはいけません
※2 … aタグの代わりにLinkタグを使います
※3 … RouteはRoutesの中に入れます。Routesタグを書いた場所にコンポーネントの内容が表示されます
※4 … Routeタグでは「どのURLにアクセスすると、どのコンポーネントを表示するか」を決めます
※5 … 「*」は用意されていないURL全般を指します
src/Home.js
import React from 'react';
import { useNavigate } from 'react-router-dom';
const Home = () => {
const navigate = useNavigate();
const clickBack = () => {
navigate(-1); ※1
};
return(
<>
<h1>Home</h1>
<button onClick={clickBack}>BACK</button>
</>
)
}
export default Home;
※1 … 「‐1」とすればひとつ前のページに戻れます。「(‘/about’)」とすればAboutページにナビゲートされます。
react-router-domはSPAに最適化されている
react-router-domは主にSPAを作るときに使われます。
<Link>を使ってページを切り替えても、ブラウザのページ全体をリロードせずにコンポーネントを変更できます。
これにより素早いページ遷移が可能になります。
逆にNext.jsでは、next/linkやnext/routerを使いますし、MPA(マルチページアプリケーション)では普通に<a href=”/about”>のようなリンクで遷移します。
BACK