Reactの動画教材の中でReact Router v5が使われていた関係で現行のReact Router v7(v6)では動かない箇所がいくつか存在しました。
前回の記事ではルーティングの際に全体を囲む記法の違いについて書きました。
今回の記事は、JavaScript側でページ遷移させる方法であるv5の<useHistory>
とv6以降の<useNavigate>
について書いていこうと思います。
【v5】useHistory
React Router v5では<Links to="(パス名)">
を用いないページ遷移の方法としてuseHistoryが使われていました。
import { Link, useHistory } from "react-router-dom";
export const Page1 = () => {
const history = useHistory();
const onClickDetailA = () => history.push("page1/detail/");
return (
<>
<div>
<h1>Page1</h1>
<button onClick={onClickDetailA}>Push</button>
</div>
</>
);
};
遷移したいリンク先をhistory.push
で定義してあげることでページ遷移のリンクを設定する仕組みでした。
ですが、React v6以降ではuseHistoryは使えなくなってしまったため、代わりにuseNavigate
を使う形となります。
import { Link, useNavigate } from "react-router-dom";
export const Page1 = () => {
const navigate = useNavigate();
return (
<div>
<h2>Page1ページです</h2>
<br />
<button
onClick={() => {navigate("/page1/detailA");}}> DetailA
</button>
</div>
);
};
useNavigateではhistory.push
の代わりにイベントの処理として{navigate("(遷移先)");}
といった記法となります。
アロー関数を使う場合は処理式の部分にnavigate
の記述を書くようにします。
個人的にはhistory.push
よりも直感的で使いやすいと感じました。
結論
React Router v6以降ではLink to
を使わないタイプの遷移を行う方法としてnavigate
を使うようにしましょう