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

JSX中SVG属性的正确语法:React SVG组件填充色传递问题

解决React SVG组件填充色绑定问题

嘿,这问题很常见,我来给你捋清楚正确的写法!

首先,你遇到的核心问题是JSX中如何把props值绑定到SVG的属性上——记住,在JSX里要插入JavaScript变量/表达式,必须用大括号{}包裹,而不是直接写字符串。

类组件写法(对应你提到的this.props)

如果你用的是类组件,直接把this.props.fillColour放到SVG的fill属性的大括号里就行,示例代码如下:

import React from 'react';

class Icon extends React.Component {
  render() {
    return (
      {/* 关键:用{this.props.fillColour}绑定fill属性 */}
      <svg width="24" height="24" viewBox="0 0 24 24" fill={this.props.fillColour}>
        {/* 这里放你的SVG路径等内容,注意要移除内部元素的硬编码fill属性! */}
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z" />
      </svg>
    );
  }
}

// 可选:设置默认填充色,防止没传props时显示异常
Icon.defaultProps = {
  fillColour: "#000"
};

export default Icon;

函数组件写法(现在更推荐的方式)

如果是用函数式组件,写法会更简洁,直接解构props就行:

import React from 'react';

// 解构props并设置默认值
function Icon({ fillColour = "#000" }) {
  return (
    <svg width="24" height="24" viewBox="0 0 24 24" fill={fillColour}>
      {/* SVG内容 */}
      <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z" />
    </svg>
  );
}

export default Icon;

重要注意事项

  • 如果你的SVG内部的<path>或其他元素本身写了fill="#xxx"这种硬编码值,它会覆盖SVG标签上的fill属性!所以一定要把内部元素的fill属性删掉,或者改成fill="inherit"让它继承父元素的颜色。
  • 调用组件的时候,你原来的写法<Icon fillColour="#ff5e3a"/>是没问题的,props的命名用驼峰式很规范。

这样写之后,你的Icon组件就能正确接收并应用传入的填充色啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:08:49