From 8b29f48094bffe030b5c912badf70639a6225dd6 Mon Sep 17 00:00:00 2001 From: "E. Almqvist" Date: Sat, 9 Jul 2022 02:13:24 +0200 Subject: [PATCH] Add server side stylesheet for styled components --- pages/_document.tsx | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 pages/_document.tsx diff --git a/pages/_document.tsx b/pages/_document.tsx new file mode 100644 index 0000000..2559f34 --- /dev/null +++ b/pages/_document.tsx @@ -0,0 +1,43 @@ +import Document, { DocumentContext, Html, Head, Main, NextScript } from "next/document"; +import React from "react"; +import { ServerStyleSheet } from "styled-components"; + + +export default class MyDocument extends Document { + static async getInitialProps(ctx: DocumentContext) { + const sheet = new ServerStyleSheet(); + const originalRenderPage = ctx.renderPage; + + try { + ctx.renderPage = () => + originalRenderPage({ + enhanceApp: App => props => sheet.collectStyles(), + }); + + const initialProps = await Document.getInitialProps(ctx); + return { + ...initialProps, + styles: ( + <> + {initialProps.styles} + {sheet.getStyleElement()} + + ), + }; + } finally { + sheet.seal(); + } + } + + render() { + return ( + + + +
+ + + + ); + } +}