例えばポートフォリオサイトを作る場合。
下記のようにReactのルートパラメータの設定で個々の作品の詳細ページが作成したとします。
- http://localhost:3000/work/aaa
- http://localhost:3000/work/bbb
- http://localhost:3000/work/ccc
詳細ページが表示ができるようになったのはいいけど、「http://localhost:3000/work/」にはブラウザURL欄直入力で飛んで欲しくない場合ですね。
今回自分はポートフォリオサイトを作っていて、トップページ上にwork一覧のリンクを載せて、そこからwork詳細ページに飛ぶようにしていました。
workの一覧ページは必要なかったのです。
別ページへの飛ばし方:Navigateを使う
やり方はとっても簡単です。Route情報を設定しているファイルでNavigateをインポートします。
import { Navigate } from 'react-router-dom';
次に対策したいURLに対して飛ばす先のリンクを設定します。
今回は「/work」に入ろうとしたらトップページ「 / 」に飛ばすようにします。
<Route path="/work" element={<Navigate to="/" />} /> {/* リダイレクトを追加 */}
これだけでOKです!
ルート設定jsファイルのサンプルはこちらです。簡単ですね!
import { Route, createBrowserRouter, createRoutesFromElements, Navigate } from 'react-router-dom';
import TopPage from './pages/TopPage';
import WorkDetail from './components/work/WorkDetail';
import RouterNav from './components/RouterNav';
const routesLink = createBrowserRouter(
createRoutesFromElements(
<Route element={<RouterNav />}>
<Route path="/" element={<TopPage />} />
<Route path="/work" element={<Navigate to="/" />} /> {/* リダイレクトを追加 */}
<Route path="/work/:id" element={<WorkDetail />} />
</Route>
)
);
export default routesLink;