You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署后自定义Material UI样式未生效的问题求助

问题原因

你写的.css-i4bv87-MuiSvgIcon-root是Material UI在开发环境自动生成的带哈希的类名,但生产环境下Material UI会压缩重命名这些类名(比如变成css-xyz123-MuiSvgIcon-root),导致你的样式选择器匹配不到目标元素,所以fontSize不生效。

解决方案

以下是几种可靠的修复方式,按推荐程度排序:

1. 针对MUI基础类名编写选择器

直接使用Material UI的基础类名MuiSvgIcon-root(这个类名的前缀部分不会随环境变化),替换掉带哈希的类名:

export const Icon = styled(Box)({
    color: "gray",
    position: "relative",

    "& .MuiSvgIcon-root": {
        fontSize: "2rem",
    },

    "&:hover": {
        color: "black",
    },
});

2. 直接封装SvgIcon组件

如果你的icon本身就是MUI的SvgIcon实例,直接用styled封装SvgIcon更简洁,避免嵌套容器:

import { styled } from '@mui/material/styles';
import SvgIcon from '@mui/material/SvgIcon';

export const StyledIcon = styled(SvgIcon)({
    fontSize: "2rem",
    color: "gray",
    "&:hover": {
        color: "black",
    },
});

然后在App.js里使用:

<StyledIcon>{icon}</StyledIcon>

3. 克隆icon元素添加样式

如果需要保留Box容器,可通过React.cloneElement给传入的icon直接添加样式,完全不依赖类名:

// App.js里的代码
import React from 'react';

<Icon>
  {React.cloneElement(icon, { sx: { fontSize: "2rem" } })}
</Icon>

内容的提问来源于stack exchange,提问作者Abby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:10:26