サスペンスを使ったストリーミング
React Suspense を使用したストリーミングにより、重要でないデータを遅延させることでアプリの初期レンダリングを高速化し、UI レンダリングのブロックを解除できます。
React Router は、ローダーとアクションから Promise を返すことで React Suspense をサポートしています。
1. ローダーから Promise を返す
React Router は、ルートコンポーネントをレンダリングする前にルートローダーを待機します。重要でないデータのローダーのブロックを解除するには、ローダー内で await を行う代わりに Promise を返します。
2. フォールバックと解決済みのUIをレンダリングする
Promise は loaderData
で利用可能になり、<Await>
は Promise を待機し、<Suspense>
にフォールバック UI をレンダリングするようにトリガーします。
React 19の場合
React 19 を試している場合は、Await
の代わりに React.use
を使用できますが、新しいコンポーネントを作成し、サスペンスのフォールバックをトリガーするために Promise を渡す必要があります。