intercepting routes を利用して、intagaram like な遷移を実現してみましょう。
ここでいう、intagaram like な遷移とは下記のようなものです。
- 一覧ページから詳細のページに遷移する際には、URLを詳細のページに変更しつつ、一覧のページにモーダルのような形で詳細の情報を表示する
- 詳細ページに直接アクセスされた場合には、詳細だけのページを表示する
Next.js の 前回の parallel routes とあわせて intercepting routes を利用することで、このような挙動を実現することができます。
実装する
まずは、モーダルを表示するために、parallel routes を追加します。
次に Layout を更新します。
最後に、intercepting routes を追加してみましょう。
これで詳細がモーダルのように表示されるようになりました。
実際にhttp://localhost:3000/inbox
にアクセスして確認してみましょう。
仕上げ
実は、このままだとモーダルが閉じません。
戻るボタンやグレーな部分をクリックすると/inbox
に遷移するようになっています。
URLは変わっていますが、画面は変わっていません。なぜでしょうか?
.
.
.
前回のないようにある通り parallel routes
がソフトナビゲーションした際に、/inbox
にマッチするサブページ(@modal/inbox/page.tsx)がないため、サブページとして表示しているモーダルが表示され続けているためです。
仕上げとして、apps/solution/app/(dashboard)/@modal/inbox/page.tsx
を追加してみましょう。
これで閉じられるようになりました。
まとめ
intercepting routes を利用することで、特定のページの遷移を intercept して、違う内容を表示することができます。
また、parallel routes とあわせて利用することで、modal のような挙動を実現することができます。