<Outlet />が何かと簡単なサンプルコードで解説
今回は<Outlet />についてのメモの記事になります。
<Outlet />とは何か
親ルートの中に設定された子ルートの画面を表示するためのものです。
コードを見た方が理解が深まるのでそうします。
サンプルコード
下記のコードで考えます。
// 下記はApp.tsxとする
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import LoginPage from './pages/LoginPage';
import DashboardPage from './pages/DashboardPage';
import AccessProtect from './components/AccessProtect';
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/login" element={<LoginPage />} />
<Route element={<AccessProtect />}>
<Route
path="/dashboard"
element={<DashboardPage />}
/>
</Route>
</Routes>
</BrowserRouter>
);
}
export default App;
// AccessProtect.tsxは下記とする、必要な部分のみ掲載
import { useEffect, useState } from 'react';
import { Navigate, Outlet } from 'react-router-dom';
import axios from 'axios';
function AccessProtect() {
return <Outlet />;
}
export default AccessProtect;
注目するのは下記のコードです。
<Route element={<AccessProtect />}>
<Route
path="/dashboard"
element={<DashboardPage />}
/>
</Route>このコードでは下記の関係になっています。
- 親ルート:
AccessProtect - 子ルート:
DashboardPage
AccessProtect.tsxに「return <Outlet />」の記述があることで「return DashboardPage.tsx」といった感じになりDashboardPage.tsxを表示することができます。