データローディング
データは、loader
および clientLoader
からルートコンポーネントに提供されます。
ローダーデータは、ローダーから自動的にシリアライズされ、コンポーネントでデシリアライズされます。文字列や数値のようなプリミティブ値に加えて、ローダーは Promise、Map、Set、Date などを返すことができます。
loaderData
プロップの型は、自動的に生成されます。
クライアントデータローディング
clientLoader
は、クライアントでデータをフェッチするために使用されます。これは、ブラウザからのみデータをフェッチしたいページやプロジェクト全体に役立ちます。
サーバーデータローディング
サーバーレンダリングの場合、loader
は初期ページロードとクライアントナビゲーションの両方に使用されます。クライアントナビゲーションは、ブラウザからサーバーへの React Router による自動 fetch
を介してローダーを呼び出します。
loader
関数はクライアントバンドルから削除されるため、ブラウザに含まれることを心配せずにサーバー専用の API を使用できることに注意してください。
静的データローディング
プリレンダリングの場合、ローダーは本番ビルド中にデータをフェッチするために使用されます。
プリレンダリングする URL は、react-router.config.ts で指定します。
サーバーレンダリングの場合、プリレンダリングされていない URL は通常どおりサーバーレンダリングされるため、単一のルートで一部のデータをプリレンダリングしながら、残りをサーバーレンダリングできることに注意してください。
両方のローダーの使用
loader
と clientLoader
は一緒に使用できます。loader
は、初期 SSR (またはプリレンダリング) のためにサーバーで使用され、clientLoader
は後続のクライアント側のナビゲーションで使用されます。
また、関数の hydrate
プロパティを設定することで、ハイドレーション中およびページがレンダリングされる前にクライアントローダーを強制的に実行することもできます。この状況では、クライアントローダーの実行中にフォールバック UI を表示するために HydrateFallback
コンポーネントをレンダリングする必要があります。
次: アクション
こちらも参照してください: