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

React中使用Styled-Components设置Material Icon样式不生效如何解决?

问题原因

styled-components 为自定义组件设置样式时,会自动将生成的专属样式类名以className属性的形式传递给目标组件。你定义的ArrowIcon组件没有接收这个属性,也没有将其绑定到实际渲染的<i>标签上,所以生成的样式规则没有挂载到对应DOM元素,最终表现为样式不生效,元素审查面板也看不到对应规则。

修复方案

调整ArrowIcon组件的定义,接收并绑定className属性到<i>标签即可,修改后代码如下:

const ArrowIcon = (props) => (
  // 把styled生成的className拼接到原有类名后
  <i className={`material-icons-outlined ${props.className}`}> {props.icon} </i>
);

const LeftBtn  =  styled(ArrowIcon)`
position:absolute;
font-size:100px;
`;
const RightBtn = styled(ArrowIcon)``;

return ( 
  <>
    <LeftBtn icon={"arrow_back"} />
    <RightBtn icon={"arrow_forward"}/> 
  </>
)

注:平级JSX元素需要包裹在React Fragment(<></>)或其他容器组件中,避免语法报错

修改后样式会正常生效,元素审查面板也可以看到对应的样式规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:09:01