Remix migration
This commit is contained in:
41
app/entry.server.tsx
Normal file
41
app/entry.server.tsx
Normal file
@ -0,0 +1,41 @@
|
||||
import { CacheProvider } from "@emotion/react";
|
||||
import createEmotionCache from "./createEmotionCache.js";
|
||||
import { createEmotionServer } from "../emotion-server.js";
|
||||
import { type EntryContext } from "@remix-run/cloudflare";
|
||||
import { RemixServer } from "@remix-run/react";
|
||||
import { renderToString } from "react-dom/server";
|
||||
import { ServerStyleContext } from "./context.js";
|
||||
|
||||
export default function handleRequest(
|
||||
request: Request,
|
||||
responseStatusCode: number,
|
||||
responseHeaders: Headers,
|
||||
remixContext: EntryContext
|
||||
) {
|
||||
const cache = createEmotionCache();
|
||||
const { extractCriticalToChunks } = createEmotionServer(cache);
|
||||
const html = renderToString(
|
||||
<ServerStyleContext.Provider value={null}>
|
||||
<CacheProvider value={cache}>
|
||||
<RemixServer context={remixContext} url={request.url} />
|
||||
</CacheProvider>
|
||||
</ServerStyleContext.Provider>
|
||||
);
|
||||
|
||||
const chunks = extractCriticalToChunks(html);
|
||||
|
||||
const markup = renderToString(
|
||||
<ServerStyleContext.Provider value={chunks.styles}>
|
||||
<CacheProvider value={cache}>
|
||||
<RemixServer context={remixContext} url={request.url} />
|
||||
</CacheProvider>
|
||||
</ServerStyleContext.Provider>
|
||||
);
|
||||
|
||||
responseHeaders.set("content-type", "text/html;charset=utf-8");
|
||||
|
||||
return new Response("<!DOCTYPE html>" + markup, {
|
||||
headers: responseHeaders,
|
||||
status: responseStatusCode,
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user