【问题标题】:How to change or override common component in React js如何更改或覆盖 React js 中的公共组件
【发布时间】:2022-01-24 18:40:54
【问题描述】:

我有一个通用组件,我想更改它的颜色属性以在其他地方使用它。

const ViewAllIcon = (props) => (
  <svg
    xmlns="http://www.w3.org/2000/svg"
    width="18"
    height="18"
    viewBox="0 0 26 27"
    {...props}
  >
    <path
      fill="var(--primary)"
      d="M13 0C5.832 0 0 5.86 0 13.061c0 7.202 5.832 13.062 13 13.062s13-5.86 13-13.062C26 5.86 20.168 0 13 0z"
    />
    <path
      fill="#FFF"
      d="M14.764 13.061l-4.437-4.726c-.48-.512-.48-1.344 0-1.856s1.261-.512 1.742 0l5.357 5.708c.454.483.454 1.266 0 1.749l-5.357 5.707c-.48.512-1.261.512-1.742 0-.48-.512-.48-1.343 0-1.855l4.437-4.727z"
    />
  </svg>
);

export default ViewAllIcon;

这是具有主要蓝色和白色的常见组件。

<ViewAllIcon className="ml8" fill="white" />

我正在使用它将填充颜色更改为白色和绿色。

【问题讨论】:

    标签: javascript css reactjs next.js


    【解决方案1】:

    将填充值更改为“currentColor”,然后将颜色变量传递给组件。

    ViewAllIcon({ color: 'var(--primary)' })
    
    or
    
    <ViewAllIcon color={'var(--primary)'} />
    
    
    const ViewAllIcon = (props) => (
          <svg
            xmlns="http://www.w3.org/2000/svg"
            width="18"
            height="18"
            viewBox="0 0 26 27"
            {...props}
          >
            <path
              fill="currentColor"
              d="M13 0C5.832 0 0 5.86 0 13.061c0 7.202 5.832 13.062 13 13.062s13-5.86 13-13.062C26 5.86 20.168 0 13 0z"
            />
            <path
              fill="currentColor"
              d="M14.764 13.061l-4.437-4.726c-.48-.512-.48-1.344 0-1.856s1.261-.512 1.742 0l5.357 5.708c.454.483.454 1.266 0 1.749l-5.357 5.707c-.48.512-1.261.512-1.742 0-.48-.512-.48-1.343 0-1.855l4.437-4.727z"
            />
          </svg>
        );
        
        export default ViewAllIcon;
    

    【讨论】:

      【解决方案2】:

      你可以直接把道具放在填充属性上

      类似这样的:

      const ViewAllIcon = (props) => (
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="18"
          height="18"
          viewBox="0 0 26 27"
          {...props}
        >
          <path
            fill={props.fill} // <--- UPDATE HERE!
            d="M13 0C5.832 0 0 5.86 0 13.061c0 7.202 5.832 13.062 13 13.062s13-5.86 13-13.062C26 5.86 20.168 0 13 0z"
          />
          <path
            fill="#FFF"
            d="M14.764 13.061l-4.437-4.726c-.48-.512-.48-1.344 0-1.856s1.261-.512 1.742 0l5.357 5.708c.454.483.454 1.266 0 1.749l-5.357 5.707c-.48.512-1.261.512-1.742 0-.48-.512-.48-1.343 0-1.855l4.437-4.727z"
          />
        </svg>
      );
      
      export default ViewAllIcon;
      

      工作示例:

      【讨论】:

      • 也许我可以做到,但我想改变我的组件渲染&lt;ViewAllIcon className="ml8" fill="white" /&gt;
      • 你的意思是按一个按钮来动态改变它吗?
      猜你喜欢
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 2017-05-22
      相关资源
      最近更新 更多