routeRSCServerRequest
本页内容

unstable_routeRSCServerRequest



此 API 是实验性的,可能会在次要/补丁版本中发生重大更改。请谨慎使用,并密切关注相关更改的发行说明。

摘要

参考文档 ↗

将传入的 Request 路由到 RSC 服务器,并为数据/资源请求适当地代理服务器响应,或为文档请求渲染为 HTML。

import { createFromReadableStream } from "@vitejs/plugin-rsc/ssr";
import * as ReactDomServer from "react-dom/server.edge";
import {
  unstable_RSCStaticRouter as RSCStaticRouter,
  unstable_routeRSCServerRequest as routeRSCServerRequest,
} from "react-router";

routeRSCServerRequest({
  request,
  fetchServer,
  createFromReadableStream,
  async renderHTML(getPayload) {
    const payload = await getPayload();

    return await renderHTMLToReadableStream(
      <RSCStaticRouter getPayload={getPayload} />,
      {
        bootstrapScriptContent,
        formState: await getFormState(payload),
      }
    );
  },
});

签名

async function routeRSCServerRequest({
  request,
  fetchServer,
  createFromReadableStream,
  renderHTML,
  hydrate = true,
}: {
  request: Request;
  fetchServer: (request: Request) => Promise<Response>;
  createFromReadableStream: SSRCreateFromReadableStreamFunction;
  renderHTML: (
    getPayload: () => Promise<RSCPayload>,
  ) => ReadableStream<Uint8Array> | Promise<ReadableStream<Uint8Array>>;
  hydrate?: boolean;
}): Promise<Response>

参数

opts.createFromReadableStream

你的 react-server-dom-xyz/clientcreateFromReadableStream 函数,用于解码来自服务器的有效负载。

opts.fetchServer

一个将 Request 转发到 RSC 处理程序并返回一个包含序列化 unstable_RSCPayloadPromise<Response> 的函数。

opts.hydrate

是否使用 RSC 有效负载来水合服务器响应。默认为 true

opts.renderHTML

一个将 unstable_RSCPayload 渲染为 HTML 的函数,通常使用 <RSCStaticRouter>

opts.request

要路由的请求。

返回

一个 Response,它要么包含数据请求的 RSC 有效负载,要么渲染文档请求的 HTML。

文档和示例 CC 4.0
编辑