Intercepting Routes
Intercepting routesを使用すると、アプリケーションの別の部分からのルートを現在のレイアウト内で読み込むことができます。このルーティングパラダイムは、ユーザーが別のコンテキストに切り替えることなく、ルートの内容を表示したい場合に便利です。
たとえば、フィード内の写真をクリックすると、フィードをオーバーレイするモーダル内で写真を表示できます。この場合、Next.jsは/photo/123
ルートをインターセプトし、URLをマスクして/feed
上にオーバーレイします。
しかし、共有可能なURLをクリックしたり、ページを更新したりして写真に移動する場合、モーダルの代わりに写真ページ全体をレンダリングする必要があります。この際はルートのインターセプトが発生しないようにします。
規約
Intercepting routesはセグメントに対する(..)
規約を用いて定義できます 。これは、../
の相対パス規約に似ています。
使用可能なもの:
(.)
同じレベルのセグメントにマッチ(..)
一つ上のレベルのセグメントにマッチ(..)(..)
二つ上のレベルのセグメントにマッチ(...)
app
ディレクトリのrootからセグメントにマッチ
たとえば、feed
セグメント内でphoto
セグメントをインターセプトするには、(..)photo
ディレクトリを作成します。
(..)
規約はファイルシステムではなく、ルートセグメントに基づいていることに注意してください。
例
モーダル
Intercepting RoutesはParallel Routesと組み合わせてモーダルを作成するために使用できます。これにより、モーダルを構築する際の一般的な課題を次のように解決できます:
- モーダルの内容をURLを通じて共有可能にする
- ページを更新したときにモーダルが閉じず、