Skip to content

Commit 4d458eb

Browse files
docs(api/rsc): add examples (#13947)
* Add exmaples to RSC API docs * Update * Update docs/api/rsc/matchRSCServerRequest.md Co-authored-by: Brooks Lybrand <[email protected]> * Update and streamline examples --------- Co-authored-by: Brooks Lybrand <[email protected]>
1 parent c0a2a3b commit 4d458eb

File tree

6 files changed

+110
-0
lines changed

6 files changed

+110
-0
lines changed

docs/api/rsc/RSCHydratedRouter.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,29 @@ unstable: true
1111

1212
Hydrates a server rendered `RSCPayload` in the browser.
1313

14+
```tsx filename=entry.browser.tsx lines=[7-12]
15+
createFromReadableStream(getRSCStream()).then(
16+
(payload: RSCServerPayload) => {
17+
startTransition(async () => {
18+
hydrateRoot(
19+
document,
20+
<StrictMode>
21+
<RSCHydratedRouter
22+
createFromReadableStream={
23+
createFromReadableStream
24+
}
25+
payload={payload}
26+
/>
27+
</StrictMode>,
28+
{
29+
formState: await getFormState(payload),
30+
}
31+
);
32+
});
33+
}
34+
);
35+
```
36+
1437
## Props
1538

1639
### createFromReadableStream

docs/api/rsc/RSCStaticRouter.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,25 @@ unstable: true
1111

1212
Pre-renders an `RSCPayload` to HTML. Usually used in `routeRSCServerRequest`'s `renderHTML` callback.
1313

14+
```tsx filename=entry.ssr.tsx lines=[9]
15+
routeRSCServerRequest({
16+
request,
17+
fetchServer,
18+
createFromReadableStream,
19+
async renderHTML(getPayload) {
20+
const payload = await getPayload();
21+
22+
return await renderHTMLToReadableStream(
23+
<RSCStaticRouter getPayload={getPayload} />,
24+
{
25+
bootstrapScriptContent,
26+
formState: await getFormState(payload),
27+
}
28+
);
29+
},
30+
});
31+
```
32+
1433
## Props
1534

1635
### getPayload

docs/api/rsc/createCallServer.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@ unstable: true
1111

1212
Create a React `callServer` implementation for React Router.
1313

14+
```tsx filename=entry.browser.tsx
15+
setServerCallback(
16+
createCallServer({
17+
createFromReadableStream,
18+
createTemporaryReferenceSet,
19+
encodeReply,
20+
})
21+
);
22+
```
23+
1424
## Options
1525

1626
### createFromReadableStream

docs/api/rsc/getRSCStream.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,21 @@ unstable: true
1010
## Summary
1111

1212
Get the prerendered RSC stream for hydration. Usually passed directly to your `react-server-dom-xyz/client`'s `createFromReadableStream`.
13+
14+
```tsx filename=entry.browser.tsx lines=[1]
15+
createFromReadableStream(getRSCStream()).then(
16+
(payload: RSCServerPayload) => {
17+
startTransition(async () => {
18+
hydrateRoot(
19+
document,
20+
<StrictMode>
21+
<RSCHydratedRouter /* props */ />
22+
</StrictMode>,
23+
{
24+
/* ... */
25+
}
26+
);
27+
});
28+
}
29+
);
30+
```

docs/api/rsc/matchRSCServerRequest.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,27 @@ unstable: true
1111

1212
Matches the given routes to a Request and returns a RSC Response encoding an `RSCPayload` for consumption by a RSC enabled client router.
1313

14+
```tsx filename=entry.rsc.ts
15+
matchRSCServerRequest({
16+
createTemporaryReferenceSet,
17+
decodeAction,
18+
decodeFormState,
19+
decodeReply,
20+
loadServerAction,
21+
request,
22+
routes: routes(),
23+
generateResponse(match) {
24+
return new Response(
25+
renderToReadableStream(match.payload),
26+
{
27+
status: match.statusCode,
28+
headers: match.headers,
29+
}
30+
);
31+
},
32+
});
33+
```
34+
1435
## Options
1536

1637
### basename

docs/api/rsc/routeRSCServerRequest.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,25 @@ unstable: true
1111

1212
Routes the incoming request to the RSC server and appropriately proxies the server response for data / resource requests, or renders to HTML for a document request.
1313

14+
```tsx filename=entry.ssr.tsx
15+
routeRSCServerRequest({
16+
request,
17+
fetchServer,
18+
createFromReadableStream,
19+
async renderHTML(getPayload) {
20+
const payload = await getPayload();
21+
22+
return await renderHTMLToReadableStream(
23+
<RSCStaticRouter getPayload={getPayload} />,
24+
{
25+
bootstrapScriptContent,
26+
formState: await getFormState(payload),
27+
}
28+
);
29+
},
30+
});
31+
```
32+
1433
## Options
1534

1635
### createFromReadableStream

0 commit comments

Comments
 (0)