4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

react-routerのページ遷移でstateが渡せない

Last updated at Posted at 2024-07-21

今回記事を書こうと考えた背景

  • react-router v6でuseLocationのStateの値を渡す実装をするのに嵌ってしまったためです。
    またStateの値がnullでconsoleに表示されていたためです。

原因

  • StateをdetailAにLinkで渡しているところの書き方を間違えていたからです。
    ※detailAは親RouteであるPage1からネストしたページです。

問題のファイル

Page1.jsx
export const Page1 = () => {
    const arr = [...Array(100).keys()];
    console.log(arr);
    return(
        <div>
            <h1>Page1ページです</h1>
            <nav>
                <Link to={{ pathname: "detailA", state: arr }}>DetailA</Link>
            <br/>
                <Link to="detailB">DetailB</Link>
            </nav>
            <Outlet />
        </div>
    );
};

実行結果

image.png

# 修正したコード

Page1.jsx
export const Page1 = () => {
    const arr = [...Array(100).keys()];
    console.log(arr);
    return(
        <div>
            <h1>Page1ページです</h1>
            <nav>
                <Link to="detailA" state={{arry: arr }}>DetailA</Link>
            <br/>
                <Link to="detailB">DetailB</Link>
            </nav>
            <Outlet />
        </div>
    );
};

実行結果

image.png

参考にしたページ

「State」の項目を参照しました。
https://reactrouter.com/en/main/components/link#state

おわりに

バージョンが異なるときには公式ドキュメントを見てドキュメントに書いてある通りに正しい書き方での実装をしてみることが大切であると感じました。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?