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