跳转到内容

Await

要开始使用流式数据,请查看流式指南

<Await> 组件负责解析从 useLoaderData 访问的延迟加载器 Promise。

import { Await } from "@remix-run/react";
<Suspense fallback={<div>Loading...</div>}>
<Await resolve={somePromise}>
{(resolvedValue) => <p>{resolvedValue}</p>}
</Await>
</Suspense>;

道具

resolve

resolve 属性从 useLoaderData 中获取一个 Promise,用于在数据流入时进行解析。

<Await resolve={somePromise} />

当 Promise 未解析时,将呈现父级错误边界。

<Suspense fallback={<div>Loading...</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>;
}