matchRSCServerRequest
本页内容

unstable_matchRSCServerRequest



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

摘要

参考文档 ↗

将给定的路由与 Request 进行匹配,并返回一个编码了 unstable_RSCPayloadRSC Response,供启用了 RSC 的客户端路由器使用。

import {
  createTemporaryReferenceSet,
  decodeAction,
  decodeReply,
  loadServerAction,
  renderToReadableStream,
} from "@vitejs/plugin-rsc/rsc";
import { unstable_matchRSCServerRequest as matchRSCServerRequest } from "react-router";

matchRSCServerRequest({
  createTemporaryReferenceSet,
  decodeAction,
  decodeFormState,
  decodeReply,
  loadServerAction,
  request,
  routes: routes(),
  generateResponse(match) {
    return new Response(
      renderToReadableStream(match.payload),
      {
        status: match.statusCode,
        headers: match.headers,
      }
    );
  },
});

签名

async function matchRSCServerRequest({
  createTemporaryReferenceSet,
  basename,
  decodeReply,
  requestContext,
  loadServerAction,
  decodeAction,
  decodeFormState,
  onError,
  request,
  routes,
  generateResponse,
}: {
  createTemporaryReferenceSet: () => unknown;
  basename?: string;
  decodeReply?: DecodeReplyFunction;
  decodeAction?: DecodeActionFunction;
  decodeFormState?: DecodeFormStateFunction;
  requestContext?: unstable_RouterContextProvider;
  loadServerAction?: LoadServerActionFunction;
  onError?: (error: unknown) => void;
  request: Request;
  routes: RSCRouteConfigEntry[];
  generateResponse: (
    match: RSCMatch,
    {
      temporaryReferences,
    }: {
      temporaryReferences: unknown;
    },
  ) => Response;
}): Promise<Response>

参数

opts.basename

匹配请求时使用的 basename。

opts.createTemporaryReferenceSet

一个返回请求的临时引用集的函数,用于在 RSC 流中跟踪临时引用。

opts.decodeAction

你的 react-server-dom-xyz/serverdecodeAction 函数,负责加载一个服务端操作。

opts.decodeFormState

一个函数,负责使用你的 react-server-dom-xyz/serverdecodeFormState 为支持渐进式增强的表单(使用 React 的 useActionState)解码表单状态。

opts.decodeReply

你的 react-server-dom-xyz/serverdecodeReply 函数,用于解码服务端函数的参数并将其绑定到实现上,以便路由器调用。

opts.generateResponse

一个函数,负责使用你的 renderToReadableStream 生成一个编码了 unstable_RSCPayloadResponse

opts.loadServerAction

你的 react-server-dom-xyz/serverloadServerAction 函数,用于通过 ID 加载服务端操作。

opts.onError

一个可选的错误处理程序,将在请求处理过程中发生任何错误时被调用。

opts.request

要匹配的 Request

opts.requestContext

一个 unstable_RouterContextProvider 的实例,应该为每个请求创建,并传递给 actionloader中间件

opts.routes

你的路由定义

返回

一个包含用于 hydration 的 RSC 数据的 Response

文档和示例 CC 4.0
编辑