ルーティング
ルートの設定
ルートは app/routes.ts
で設定します。各ルートには、URL をマッチさせるための URL パターンと、その動作を定義するルートモジュールへのファイルパスという、2 つの必須部分があります。
以下は、より大きなルート設定のサンプルです。
設定ではなくファイル命名規則でルートを定義したい場合は、@react-router/fs-routes
パッケージが ファイルシステムルーティング規則 を提供します。必要に応じて、異なるルーティング規則を組み合わせることもできます。
ルートモジュール
routes.ts
で参照されるファイルは、各ルートの動作を定義します。
以下は、ルートモジュールのサンプルです。
ルートモジュールには、アクション、ヘッダー、エラー境界などの機能がありますが、これらについては次のガイド ルートモジュール で説明します。
ネストされたルート
ルートは、親ルートの中にネストできます。
親のパスは自動的に子に含まれるため、この設定では "/dashboard"
と "/dashboard/settings"
の両方の URL が作成されます。
子ルートは、親ルートの <Outlet/>
を通してレンダリングされます。
ルートルート
routes.ts
のすべてのルートは、特別な app/root.tsx
モジュールの中にネストされています。
レイアウトルート
layout
を使用すると、レイアウトルートは子に対して新しいネストを作成しますが、URL にセグメントを追加しません。ルートルートのようなものですが、任意のレベルで追加できます。
projects/home.tsx
をレイアウトに表示するには、アウトレットが必要です。
インデックスルート
インデックスルートは、親の URL で親の Outlet にレンダリングされます(デフォルトの子ルートのように)。
インデックスルートには子を持たせることができないことに注意してください。
ルートプレフィックス
prefix
を使用すると、親ルートファイルを作成する必要なく、ルートのセットにパスプレフィックスを追加できます。
動的セグメント
パスセグメントが :
で始まる場合、それは「動的セグメント」になります。ルートが URL に一致すると、動的セグメントは URL から解析され、他のルーター API に params
として提供されます。
1 つのルートパスに複数の動的セグメントを含めることができます。
特定のパス内のすべての動的セグメントが一意であることを確認する必要があります。そうしないと、params
オブジェクトが設定されるにつれて、後の動的セグメントの値が以前の値を上書きします。
オプションセグメント
セグメントの末尾に ?
を追加することで、ルートセグメントをオプションにすることができます。
オプションの静的セグメントも使用できます。
スプラット
「キャッチオール」または「スター」セグメントとも呼ばれます。ルートパスパターンが /*
で終わる場合、他の /
文字を含む、/
に続く任意の文字に一致します。
*
を分割代入できますが、新しい名前を割り当てる必要があります。一般的な名前は splat
です。
コンポーネントルート
コンポーネントツリー内の任意の場所で、URL に一致するコンポーネントを使用することもできます。
これらのルートは、データローディング、アクション、コード分割、その他のルートモジュール機能には関与しないため、そのユースケースはルートモジュールのユースケースよりも限定的であることに注意してください。
次へ: ルートモジュール