等待CSS加载到nextjs静态站点上?

时间:2020-04-23 02:24:35

标签: css next.js styled-components

我有一个nextjs静态站点。从屏幕截图中可以看到,JS加载速度很快,但是随后它等待样式化组件应用CSS。在页面加载后 应用CSS。

有什么想法可以等待样式化组件CSS插入吗?

static app

更新:啊,我忘了这是一个 static 应用程序-这意味着nextjs将预先呈现页面的输出,然后加载JS 。因此,似乎应该应用等待JS加载的标准技术。但是,要注意的是静态HTML是由nextjs自动生成的,因此需要一种通过nextjs来实现的方法。

1 个答案:

答案 0 :(得分:2)

为样式组件安装Babel插件=> npm i -D babel-plugin-styled-components

然后创建页面/_document.js


import Document from 'next/document'
import { ServerStyleSheet } from 'styled-components'

export default class MyDocument extends Document {
  static async getInitialProps(ctx) {
    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()
    }
  }

如果要从样式组件中使用ThemeProvider,请将ThemeProvider添加到pages / _app.js。

This is an example provided by Next.js