Next で画面に配置された「前の画面に戻る」ボタンのクリック時に router.back() ではない処理をさせたい。

実現したいこと

Nextjs で以下のような画面遷移で構成されるWEBを作成しています。

イメージ説明

上記の図についての概要は以下です。

  • 画面Aと画面Bには、画面C1に遷移するためのボタンあるいはテキストリンクがあり、それらをクリックすることで画面C1 に遷移します。
  • 画面C1 には 「次へ進む」というボタンがありこれをクリックすると画面C2に遷移します。
  • 同様に画面C2 には 「次へ進む」というボタンがありこれをクリックすると画面C3に遷移します。
  • 画面C3には「画面C1にもどる」というボタンがありこれをクリックすると画面C1に戻ります。
  • また画面C1には以下のようにヘッダーがあり、ヘッダーの左端には「前の画面に戻る」という趣旨の左向き矢印のアイコンボタンが配置されている。以下でこれを(ヘッダの)「戻る」ボタンと言います。

イメージ説明

実現したいことは以下です。

  • 画面AまたはBから画面C1に遷移し、その後C2からC3へと進み、C1 に戻ってきたときに、C1のヘッダの「戻る」ボタンをクリックしたときに、はじめにC1に遷移してきたときの遷移元(がAならばAに、BならばB)に戻るようにしたい。

発生している問題・分からないこと

現状では、画面C1のヘッダの「戻る」ボタンがクリックされると、単に

const router = useRouter()

で取ってきた routerback メソッドを実行させているので、画面C3から戻ってきてC1に遷移したときに 「戻る」ボタンをクリックすると、C3 に遷移してしまう。

該当のソースコード

特になし

試したこと・調べたこと

上記の詳細・結果

検索して調べましたが、上記を実現できるような(できれば簡潔な)方法が見つかりませんでした。

補足

  • 上記の問題が発生している実際の環境のNextのバーバージョンは12ですが、最新の14系だったらこういうことができる、という回答で問題ありません。

  • 何らかの node モジュールを使うのがよい(or使うしかない)という回答でもけっこうです。

コメントを投稿

0 コメント