reactjs 初始加载时未正确显示MUI样式

rwqw0loc  于 2023-02-03  发布在  React
关注(0)|答案(1)|浏览(128)

我在我的一个项目中使用了MUI,我已经开始面临这些问题。在我的应用程序初次加载到生产环境时,MUI样式似乎没有得到应用。例如:
1.开关组件未正确显示
1.按钮组件加载没有填充/边距,即使我使用了sx prop 。虽然他们的工作时,我使用style而不是sx
1.上下文菜单也加载了不正确的样式。所有的样式得到修复时,我刷新页面。

我该如何解决这个问题?

flseospp

flseospp1#

此问题可能是由Next.js中的服务器端呈现(SSR)过程问题引起的。最初在服务器上呈现页面时,它无法访问客户端JavaScript,这可能导致无法应用来自Material-UI的样式。在客户端上重新呈现页面时,将应用样式,因为客户端JavaScript可用。
要解决这个问题,你可以尝试在React.useEffect钩子中 Package 你的组件,并设置一个状态标志,当组件装载到客户端时触发重新呈现。这将确保在初始呈现期间应用样式。
下面是一个例子:

import { useState, useEffect } from "react";

const MyComponent = () => {
  const [mounted, setMounted] = useState(false);

  useEffect(() => {
    setMounted(true);
  }, []);

  return (
    <div>
      {mounted ? (
        <MyStyledComponent />
      ) : (
        <div>Loading...</div>
      )}
    </div>
  );
};

export default MyComponent;

或者,您可以在应用className时使用此快捷方式。

className={`${mounted && classes.your_element_class}`}

相关问题