0
0

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-dom】遷移元の画面に戻りたい

Posted at

初めに

Reactで単語帳アプリを作ろうと思ったら遷移元の画面に戻る処理でつまづいたので解決方法を残しておきます。

作りたい処理

画面は次の3つ

  • 単語を一覧表示する画面
  • 単語の詳細を確認する画面
  • 単語を編集する画面

遷移図はこんな感じ
image.png
編集画面の戻るボタンを押したときの遷移先を一覧画面から遷移したのか詳細画面から遷移したのかで変えたかった。

解決方法

react-router-domuseNavigate()の引数に-1を入れるだけで簡単に遷移元の画面に戻る処理ができた。
React Router v6からの仕様らしい(?)

sample.tsx
const navigate = useNavigate();
navigate(-1)

実際の画面が以下の通り
※画面遷移に関係ないところは省略してます

一覧画面

WordList.tsx
import { useNavigate } from "react-router-dom";

const WordList = () => {
    const navigate = useNavigate();

    // 詳細画面に遷移するボタン押下時処理
    const clickInfo = () => {
        navigate('/10');
    };

    // 編集画面に遷移するボタン押下時処理
    // /:id/editに遷移したいが便宜上/10/editに遷移
    const clickEdit = () => {
        navigate('/10/edit')
    }

    return (
        <>
            <h1>一覧画面</h1>
            <button onClick={clickInfo}>詳細</button>
            <button onclick={clickEdit}>編集</button>
        </>
    )
}

詳細画面

WordInfo.tsx
import { useNavigate } from "react-router-dom";

const WordList = () => {
    const navigate = useNavigate();

    // 一覧画面に遷移するボタン押下時処理
    const clickInfo = () => {
        navigate('/');
    };

    //編集画面に遷移するボタン押下時処理
    // /:id/editに遷移したいが便宜上/10/editに遷移
    const clickEdit = () => {
        navigate('/10/edit')
    }

    return (
        <>
            <h1>一覧画面</h1>
            <button onClick={clickList}>戻る</button>
            <button onclick={clickEdit}>編集</button>
        </>
    )
}

編集画面

WordInfo.tsx
import { useNavigate } from "react-router-dom";

const WordList = () => {
    const navigate = useNavigate();

    // 戻るボタン押下時処理
    const clickBack = () => {
        navigate(-1);
    };

    return (
        <>
            <h1>編集画面</h1>
            <button onClick={clickBack}>戻る</button>
        </>
    )
}

間違っているところや他の方法あれば教えてください!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?