Await
ストリーミングデータを使用するには、ストリーミングガイドを参照してください。
<Await> コンポーネントは、useLoaderData から取得した遅延ローダーの Promise を解決する役割を担います。
import { Await } from "@remix-run/react";
<Suspense fallback={<div>読み込み中...</div>}> <Await resolve={somePromise}> {(resolvedValue) => <p>{resolvedValue}</p>} </Await></Suspense>;プロパティ
resolve
resolve プロパティは、useLoaderData から Promise を取得し、データが流入する際に解決します。
<Await resolve={somePromise} />Promise が解決されるまで、親のエラーバウンダリが表示されます。
<Suspense fallback={<div>読み込み中...</div>}> <Await resolve={somePromise} /></Suspense>Promise が解決されると、children が表示されます。
children
children は、レンダリングコールバックまたは React 要素であることができます。
<Await resolve={somePromise}> {(resolvedValue) => <p>{resolvedValue}</p>}</Await>children プロパティが React 要素の場合、解決された値は子ツリー内の useAsyncValue を通じてアクセス可能です。
<Await resolve={somePromise}> <SomeChild /></Await>import { useAsyncValue } from "@remix-run/react";
function SomeChild() { const value = useAsyncValue(); return <p>{value}</p>;}errorElement
errorElement プロパティは、Promise が拒否されたときにエラーバウンダリを表示するために使用できます。
<Await errorElement={<div>ああ!</div>} />子ツリー内でエラーにアクセスするには、useAsyncError を使用できます。
<Await errorElement={<SomeChild />} />import { useAsyncError } from "@remix-run/react";
function SomeChild() { const error = useAsyncError(); return <p>{error.message}</p>;}