Zeichen's app for both server and client.
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

_document.tsx 788 B

12345678910111213141516171819202122232425262728293031
  1. import * as React from 'react'
  2. import Document from 'next/document'
  3. import { ServerStyleSheet } from 'styled-components'
  4. export default class MyDocument extends Document {
  5. static async getInitialProps(ctx) {
  6. const sheet = new ServerStyleSheet()
  7. const originalRenderPage = ctx.renderPage
  8. try {
  9. ctx.renderPage = () =>
  10. originalRenderPage({
  11. enhanceApp: (App) => (props) =>
  12. sheet.collectStyles(<App {...props} />),
  13. })
  14. const initialProps = await Document.getInitialProps(ctx)
  15. return {
  16. ...initialProps,
  17. styles: (
  18. <React.Fragment>
  19. {initialProps.styles}
  20. {sheet.getStyleElement()}
  21. </React.Fragment>
  22. ),
  23. }
  24. } finally {
  25. sheet.seal()
  26. }
  27. }
  28. }