如何在材质ui SVG ICON中使用自定义SVG文件

纳扬·斯里瓦斯塔瓦(Nayan Srivastava)

我正在尝试使用chip带有SVG的删除图标,

图标代码是

const icon = (props) => {
    return (
        <SvgIcon>
            <img src={'ic_check.svg'} style={{width: '20px'}} width={'20px'}/>
        </SvgIcon>
    )
};

SVG文件的内容

<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
    <g fill="none" fill-rule="evenodd">
        <rect width="20" height="20" x="2" y="2" fill="#6FB934" rx="10"/>
        <path fill="#FFF" fill-rule="nonzero" d="M9.5 15.475L6.025 12l-1.183 1.175L9.5 17.833l10-10-1.175-1.175z"/>
        <path d="M0 0h24v24H0z"/>
    </g>
</svg>

最后是

<Chip
      label={ViewUtils.NOT_EXPIRED}
      className={classes.chip}
      onDelete={() => {}}
      deleteIcon={<icon/>}/>

但这不起作用,我检查了路径,这是正确的,因为我可以在img标记中呈现相同的svg

萨基·曼索

Nayan SvgIcon采用了可以进一步设置样式的svg路径。但是在您的情况下,您的svg已被设置样式。它不会占用实际上失去SvgIcon API目的的svg文件目录路径。您只需SvgIcon要从img标记中删除

<Chip
  label={ViewUtils.NOT_EXPIRED}
  className={classes.chip}
  onDelete={() => {console.log('You Deleted this icon')}}
  deleteIcon={icon}
 />

并让您将svg作为const或从资产文件目录导入,我还没有尝试过,

const icon = <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
               <g fill="none" fill-rule="evenodd">
                <rect width="20" height="20" x="2" y="2" fill="#6FB934" rx="10"/>
                <path fill="#FFF" fill-rule="nonzero" d="M9.5 15.475L6.025 12l-1.183 1.175L9.5 17.833l10-10-1.175-1.175z"/>
                <path d="M0 0h24v24H0z"/>
             </g>
           </svg>

我们无法制作<icon/>组件是有原因的如果我们将其作为以下组件:

const Icon = (props) => {
return (
<SvgIcon>
  <svg
    xmlns="http://www.w3.org/2000/svg"
    width="24"
    height="24"
    viewBox="0 0 24 24"
  >
    <g fill="none" fill-rule="evenodd">
      <rect width="20" height="20" x="2" y="2" fill="#6FB934" rx="10" />
      <path
        fill="#FFF"
        fill-rule="nonzero"
        d="M9.5 15.475L6.025 12l-1.183 1.175L9.5 17.833l10-10-1.175-1.175z"
      />
      <path d="M0 0h24v24H0z" />
    </g>
  </svg>
</SvgIcon>
)
};

它的工作原理很像魅力,但是onDelete不会在此组件上被触发。我在实质性UI上也报告了此问题。在第一种情况下,每次都会调用onDelete。随时问任何问题。

编辑修复了图标作为组件而不是常量的上述问题。这是工作示例的codesandbox链接:https ://codesandbox.io/s/98842r4yy4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Batik SVG库中使用自定义字体?

如何在SVG JS中加载自定义svg

使用SVG的自定义Material-UI按钮?

如何在angular 6中使用自定义指令渲染动态生成的嵌入式SVG

将材质 ui 芯片的删除图标更改为自定义 svg?

使用antd自定义svg图标,如何将道具传递给svg?

如何在 css 文件中使用 SVG?

如何在Material-UI IconButton中居中对齐自定义SVG图标

如何在SVG标签中自定义PNG图像?

使用 Github SVG 创建自定义 mat-icon

如何创建自定义Font Awesome 5 SVG定义?

在Material-UI中如何在SvgIcon中使用SVG文件

如何在 Fluent UI React 的 NavItems 中使用本地 svg 文件

如何添加svg自定义图标ionic 2

Angular和SVG:如何动态加载自定义组件?

如何自定义SVG描边线帽

如何使用 2 个 SVG 制作自定义进程条?使用画布?

如何使用自定义svg图像更改bootstrap 4导航栏折叠图标

如何为使用 Javascript 生成的 <svg> 内容添加自定义标签标题?

如何使用另一个 svg 自定义标记放置?

如何自定义 wheelnav.js 的传播器(使用 svg)

如何在SVG文件中使用XML标记

如何在材质ui makeStyles中使用@supports CSS规则?

如何将自定义svg图标添加到Material UI字体图标?

带有Vuetify的FontAwesome SVG图标-如何在v-icon / prepend-icon中使用?

如何在HTML中使用外部SVG?

如何在ImageView中使用SVG图像

如何在 Snap svg 中使用 Mina?

如何在 React Native 中使用 SVG?