Reactでアプリを作っていくと、「ボタンを押して別画面に移動したい」となる。
そのとき登場するのがReact Router。中でもv6は、書き方がかなりシンプルになっていて、今ならこれ一択。
Reactは「SPA(Single Page Application)」だから、HTMLレベルで画面遷移をしない。
じゃあどうするかというと、URLを変えて**「別ページっぽく見せる」**というトリックをやってる。
React Routerはその「URLと画面の対応付け」をやってくれるライブラリ。
ルーティングを設定するときは、App.tsx
に以下のように書く:
tsx
<BrowserRouter>
<Routes>
<Route path="/" element={<HomePage />} />
<Route path="/about" element={<AboutPage />} />
</Routes>
</BrowserRouter>
<BrowserRouter>
:アプリ全体をルーティング対応にする<Routes>
:ルート定義のラッパー<Route>
:URLとコンポーネントのマッピング上記の例なら、/
にアクセスするとHomePage
が表示され、/about
ならAboutPage
になる。
リンクだけじゃなくて、ボタンをクリックして画面遷移したいことも多い。
そんなときに使うのがuseNavigate
。
tsx
const navigate = useNavigate();
const handleClick = () => {
navigate("/about");
};
これで/about
に画面遷移できる。Link
コンポーネントより柔軟に制御できるから、実務ではよく使う。
今回のプロジェクト構成はかなりベーシックだけど、ページごとにファイルを分けるのは基本。
mathematicapages/
├── HomePage.tsx
└── AboutPage.tsx
メリット:
やりたいこと | 書き方 |
---|---|
リンクで遷移 | <Link to="/about">Aboutへ</Link> |
ボタンで遷移 | navigate("/about") |
初期表示ページを設定 | / のルートにelement を指定 |
URLに動的な値を入れる | /users/:id みたいな形でルート定義 |
ルートが見つからないときの画面 | <Route path="*" element={<NotFound />} /> |
useParams()
でURLパラメータを取得してみるuseLocation()
で現在のURL情報を取得してみるReact.lazy
)👇 サンプルアプリ:React Router v6 基礎アプリ
Routes
とRoute
の構文は簡潔で覚えやすいuseNavigate()
を使えば任意のタイミングで遷移できる