computer-scienceangular-roadmapbackend-roadmapblockchain-roadmapdba-roadmapdeveloper-roadmapdevops-roadmapfrontend-roadmapgo-roadmaphactoberfestjava-roadmapjavascript-roadmapnodejs-roadmappython-roadmapqa-roadmapreact-roadmaproadmapstudy-planvue-roadmapweb3-roadmap
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
759 B
29 lines
759 B
import Document, { DocumentContext } from 'next/document'; |
|
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(<App {...props} />) |
|
}); |
|
|
|
const initialProps = await Document.getInitialProps(ctx); |
|
return { |
|
...initialProps, |
|
styles: ( |
|
<> |
|
{initialProps.styles} |
|
{sheet.getStyleElement()} |
|
</> |
|
) |
|
}; |
|
} finally { |
|
sheet.seal(); |
|
} |
|
} |
|
}
|
|
|