将给定的路由与 Request
进行匹配,并返回一个编码了 unstable_RSCPayload
的 RSC 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>
匹配请求时使用的 basename。
一个返回请求的临时引用集的函数,用于在 RSC 流中跟踪临时引用。
你的 react-server-dom-xyz/server
的 decodeAction
函数,负责加载一个服务端操作。
一个函数,负责使用你的 react-server-dom-xyz/server
的 decodeFormState
为支持渐进式增强的表单(使用 React 的 useActionState
)解码表单状态。
你的 react-server-dom-xyz/server
的 decodeReply
函数,用于解码服务端函数的参数并将其绑定到实现上,以便路由器调用。
一个函数,负责使用你的 renderToReadableStream
生成一个编码了 unstable_RSCPayload
的 Response
。
你的 react-server-dom-xyz/server
的 loadServerAction
函数,用于通过 ID 加载服务端操作。
一个可选的错误处理程序,将在请求处理过程中发生任何错误时被调用。
要匹配的 Request
。
一个 unstable_RouterContextProvider
的实例,应该为每个请求创建,并传递给 action
、loader
和中间件。
你的路由定义。