在浏览器中对服务器渲染的 unstable_RSCPayload
进行水合。
import { startTransition, StrictMode } from "react";
import { hydrateRoot } from "react-dom/client";
import {
unstable_getRSCStream as getRSCStream,
unstable_RSCHydratedRouter as RSCHydratedRouter,
} from "react-router";
import type { unstable_RSCPayload as RSCPayload } from "react-router";
createFromReadableStream(getRSCStream()).then((payload) =>
startTransition(async () => {
hydrateRoot(
document,
<StrictMode>
<RSCHydratedRouter
createFromReadableStream={createFromReadableStream}
payload={payload}
/>
</StrictMode>,
{ formState: await getFormState(payload) },
);
}),
);
function RSCHydratedRouter({
createFromReadableStream,
fetch: fetchImplementation = fetch,
payload,
routeDiscovery = "eager",
unstable_getContext,
}: RSCHydratedRouterProps)
你的 react-server-dom-xyz/client
的 createFromReadableStream
函数,用于解码来自服务器的有效负载。
可选的 fetch 实现。默认为全局 fetch
。
一个返回 unstable_RouterContextProvider
实例的函数,该实例作为 context
参数提供给客户端的 action
、loader
和中间件。此函数在每次导航或 fetcher 调用时被调用以生成一个新的 context
实例。
要水合的已解码 unstable_RSCPayload
。
"eager"
或 "lazy"
- 决定链接是立即发现,还是延迟到被点击时才发现。