インターセプティングルート
インターセプティングルートを使用すると、アプリケーションの別の部分から現在のレイアウト内でルートを読み込むことができます。このルーティングパラダイムは、ユーザーが別のコンテキストに切り替えることなくルートのコンテンツを表示したい場合に便利です。
例えば、フィード内の写真をクリックすると、フィードの上に重ねてモーダルで写真を表示できます。この場合、Next.jsは/photo/123
ルートをインターセプトし、URLをマスクして/feed
の上に重ねて表示します。

ただし、共有可能なURLをクリックしたりページを更新したりして写真に直接移動する場合は、モーダルではなく写真ページ全体がレンダリングされるべきです。この場合、ルートのインターセプトは発生しません。

規約
インターセプティングルートは(..)
規約で定義でき、これはセグメントに対する相対パス規約../
に似ています。
以下のように使用できます:
(.)
- 同じレベルのセグメントにマッチ(..)
- 1つ上のレベルのセグメントにマッチ(..)(..)
- 2つ上のレベルのセグメントにマッチ(...)
-app
ディレクトリのルートからセグメントにマッチ
例えば、feed
セグメント内からphoto
セグメントをインターセプトするには、(..)photo
ディレクトリを作成します。

(..)
規約はファイルシステムではなく、_ルートセグメント_に基づいていることに注意してください。
例
モーダル
インターセプティングルートは並列ルートと組み合わせてモーダルを作成するのに使用できます。これにより、モーダル構築時の一般的な課題を解決できます:
- モーダルコンテンツをURLで共有可能にする
- ページ更新時にモーダルを閉じるのではなくコンテキストを保持する
- 戻るナビゲーションでモーダルを閉じる(前のルートに移動しない)
- 進むナビゲーションでモーダルを再開する
以下のUIパターンを考えてみましょう。ユーザーはクライアントサイドナビゲーションでギャラリーから写真モーダルを開くか、共有可能なURLから直接写真ページに移動できます:

上記の例では、@modal
はスロットでありセグメントではないため、photo
セグメントへのパスは(..)
マッチャーを使用できます。つまり、ファイルシステム上では2レベル上であっても、photo
ルートはセグメントレベルでは1つ上だけです。
ステップバイステップの例については並列ルートのドキュメントを、実際の例については画像ギャラリーのサンプルを参照してください。
補足:
- その他の例としては、トップナビゲーションバーでログインモーダルを開きつつ専用の
/login
ページを持つ場合や、サイドモーダルでショッピングカートを開く場合などがあります。