カスタムフレームワーク
@react-router/dev
を使用する代わりに、React Router のフレームワーク機能(ローダー、アクション、フェッチャーなど)を独自のバンドラーおよびサーバー抽象化に統合できます。
クライアントレンダリング
1. ルーターを作成する
ルートモジュール API(ローダー、アクションなど)を有効にするブラウザランタイム API は createBrowserRouter
です。
これは、ローダー、アクション、エラー境界などをサポートするルートオブジェクトの配列を受け取ります。React Router Vite プラグインは routes.ts
からこれを作成しますが、手動で(または抽象化を使用して)作成し、独自のバンドラーを使用できます。
2. ルーターをレンダリングする
ブラウザでルーターをレンダリングするには、<RouterProvider>
を使用します。
3. 遅延読み込み
ルートは、lazy
プロパティを使用して、定義のほとんどを遅延的に取得できます。
サーバーレンダリング
カスタム設定をサーバーレンダリングするには、データ読み込みをレンダリングするために利用できるサーバー API がいくつかあります。
このガイドでは、その仕組みに関するいくつかのアイデアを紹介します。より深く理解するには、カスタムフレームワークのサンプルリポジトリ を参照してください。
1. ルートを定義する
ルートは、クライアントと同じ種類のオブジェクトです。
2. 静的ハンドラーを作成する
createStaticHandler
を使用して、ルートをリクエストハンドラーに変換します。
3. ルーティングコンテキストを取得してレンダリングする
React Router は Web fetch リクエスト で動作するため、サーバーがそうでない場合は、使用するオブジェクトを Web fetch Request
オブジェクトに適応させる必要があります。
このステップでは、サーバーが Request
オブジェクトを受け取ることを前提としています。
4. ブラウザでハイドレートする
ハイドレーションデータは window.__staticRouterHydrationData
に埋め込まれます。これを使用してクライアント側のルーターを初期化し、<RouterProvider>
をレンダリングします。