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