コンテンツにスキップ

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>;
}