如何在react中使用svg icons

首先,react是支持svg,所以使用svg是没有问题的,但是到目前为止(版本为v15.3.0)还不支持svg的use标签,所以打算使用svg symbol还是趁早放弃,以下为官方的svg支持标签:

既然不能用svg symbol,那么只好把每个svg icon都定义为一个组件,如麦克风图标

class Mic extends React.Component {
 render() {
   return (
        <svg className="icon-svg icon-mic" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" aria-labelledby="title">
            <title>mic</title>
            <path className="path1" d="M15 22c2.761 0 5-2.239 5-5v-12c0-2.761-2.239-5-5-5s-5 2.239-5 5v12c0 2.761 2.239 5 5 5zM22 14v3c0 3.866-3.134 7-7 7s-7-3.134-7-7v-3h-2v3c0 4.632 3.5 8.447 8 8.944v4.056h-4v2h10v-2h-4v-4.056c4.5-0.497 8-4.312 8-8.944v-3h-2z"></path>
        </svg>
   )
 }
};
export default Mic;

当然也可以定义为无状态组件:

function Mic(props) {
   return (
        <svg className="icon-svg icon-mic" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" aria-labelledby="title">
            <title>mic</title>
            <path className="path1" d="M15 22c2.761 0 5-2.239 5-5v-12c0-2.761-2.239-5-5-5s-5 2.239-5 5v12c0 2.761 2.239 5 5 5zM22 14v3c0 3.866-3.134 7-7 7s-7-3.134-7-7v-3h-2v3c0 4.632 3.5 8.447 8 8.944v4.056h-4v2h10v-2h-4v-4.056c4.5-0.497 8-4.312 8-8.944v-3h-2z"></path>
        </svg>
   )
};

export default Mic;

如果这样一个个写,那也实在是太麻烦了,于是搞了个fis3插件,自动把svg转jsx组件fis3-parser-svg-to-react-component

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我和未来有约会

令人激动的silverlight 3行为(behavior)效果

令人激动的silverlight 3行为(behaviors)效果 Mix09大会带来了很多的惊喜。 看完了http://videos.visitmix.com...

2865
来自专栏林德熙的博客

为何使用 DirectComposition 创建更加迷人的界面流畅丰富的动画组合不同的位图通过集成 DWM 节省内存兼容原有代码

本文主要翻译Why use DirectComposition,介绍 DirectComposition 的功能和优点。

1281
来自专栏DeveWork

为你的WordPress 博客文章页面增加多彩排版条

不知这个上面这个题目会不会让人产生误解,再说明一下,所谓排版条即是如下面的一个绿色的彩条(当然颜色可以自己设定)。有了这个排版条,能更加容易区分内容文字及总结文...

2439
来自专栏小狼的世界

JavaScript Mobile开发框架汇总

目前Javascript移动开发框架有些共同的特点:专门为移动设备做了优化,提供标准的UI组件;提供跨平台的支持(Android、IOS、etc);轻量级,由于...

993
来自专栏拂晓风起

HTML5骨骼动画Demo | 使用min2d、createjs、pixi播放spine动画

3065
来自专栏阮一峰的网络日志

也许,DOM 不是答案

有一个词"手机网站"(mobile web),指供手机浏览的网站,但它是不存在的。 人们提到"移动互联网"的时候,其实专指另外一样东西:手机App。 ? 一、W...

3265
来自专栏前端学习心得

【vue/axios/vue-router】制作一个精致的美团项目

1392
来自专栏前端大白专栏

react 在使用数据请求的时候和setState的时候哪个先处理

1805
来自专栏星流全栈

使用 Meteor 和 React 开发 Web App

1404
来自专栏葬爱家族

Android高德之旅(6)

我们看惯了高德地图,似乎已经习惯了它的ui,认为河流就是蓝色的,土地就是灰色的,交通路网就是黄色的。其实这个ui也是可以改的。今天就来使用下自定义地图ui。

1032

扫码关注云+社区