reactjs - 使用 GatsbyJS 和 Material-UI 重新加载页面时样式消失

标签 reactjs material-ui gatsby

页面重新加载时,样式消失。在第一次加载时,一切看起来都很正常。本地开发环境不会出现此问题。我正在使用 GatsbyJS 和 Material-UI。我试过以不同的顺序放置插件,我试过更改组件中的样式。我不明白为什么它可以在本地开发环境中工作,但在云中它会崩溃。

在 gatsby-config 中,我设置了 Material-UI:

{
      resolve: `gatsby-plugin-material-ui`,
      options: {
        stylesProvider: {
          injectFirst: true,
        },
      },
    },

gatsby-browser 和 gatsby-ssr 都有这个:

import React from 'react'
import ThemeProvider from '@material-ui/styles/ThemeProvider'
import theme from './src/components/ui/Theme'
import GlobalContextProvider from './src/context/GlobalContext'
import CartContextProvider from './src/context/CartContext'
import './src/components/layout.css'

export const wrapRootElement = ({ element }) => {
  return (
    <ThemeProvider theme={theme}>
      <CartContextProvider>
        <GlobalContextProvider>{element}</GlobalContextProvider>
      </CartContextProvider>
    </ThemeProvider>
  )
}

require('typeface-roboto')

这是网站。即使我在这里链接它,主页上的英雄部分也不会加载,但如果你点击离开(导航上的任何地方)并返回它就在那里。如果你重新加载,它会再次消失,但如果你点击离开并返回,它会重新出现。这发生在所有页面上。为什么样式消失了?

最佳答案

我找到了答案。这是目前 Gatsby 内部的一个已知问题。希望这个问题能尽快解决,因为这似乎是 Gatsby 的一个大问题。

https://github.com/gatsbyjs/gatsby/issues/25729

解决方法是以性能为代价在 gatsby-browser.js 中使用此代码:

import ReactDOM from 'react-dom'

export function replaceHydrateFunction() {
  return (element, container, callback) => {
    ReactDOM.render(element, container, callback)
  }
}

关于reactjs - 使用 GatsbyJS 和 Material-UI 重新加载页面时样式消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62945943/

相关文章:

reactjs - 如果 error.status == 401,如何重定向用户?

javascript - Material UI 监听桌面上的滚动(React)

graphql - Gatsby 在 graphql 获取时的构建过程中给出错误 "Error: Type with name "File"does not exists"

typescript - Material-ui@next 带有 typescript d.ts 文件

reactjs - Graphql:如果参数类型为字符串,则跳过该参数

graphql - 使用 GraphQL 检索包含具有不同架构的对象数组的对象

javascript - 构建我的 React/Redux 应用程序以提高效率

javascript - Webpack 从目录导入 React 组件

javascript - React - 错误 : Invalid hook call. Hooks 只能在函数组件的主体内部调用。我的语法有什么问题?

javascript - Material 表 TypeError : Cannot add property tableData, 对象不可扩展