首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么本地svg图标不能在react.js项目中解析?

本地SVG图标在React.js项目中无法解析的原因是因为React.js默认情况下只支持使用React组件形式的SVG图标,而不支持直接引用本地SVG文件。

React.js采用的是JSX语法,它将HTML和JavaScript进行了混合,可以直接在组件中使用类似HTML的标签语法。然而,SVG文件不是有效的JSX语法,无法直接在React组件中使用。

为了解决这个问题,可以使用React的SVG组件库或者将SVG图标转换为React组件。以下是两种常用的解决方案:

  1. 使用React的SVG组件库:可以使用一些第三方的SVG图标库,例如react-icons、@mdi/react等。这些库提供了一系列已经转换为React组件的常用SVG图标,可以直接在React项目中使用。具体的使用方法可以参考官方文档,例如react-icons的文档地址为:https://react-icons.github.io/react-icons/
  2. 将SVG图标转换为React组件:可以使用工具将本地的SVG图标转换为React组件,例如svgr。svgr是一个流行的SVG转React组件的工具,可以将SVG文件转换为可在React项目中使用的组件。具体的使用方法可以参考svgr的文档,地址为:https://react-svgr.com/

通过以上两种方法,你可以在React.js项目中成功解析并使用本地SVG图标。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Vue3!ElementPlus!更加优雅的使用Icon

几年前写过一篇文章叫 Vue 项目中优雅的使用 icon ,主要介绍了当时项目中主流的几种图标使用方式,比如 Img 图标、CSS 雪碧图、字体图标(Icon Font)、SVG 图标SVG Icon...这种方式估计也是当下大多数同学 Vue2 项目中正在使用的。 那么可能有人会问,这种方式在 Vue3 中不适用了吗? ,它依然适用。那我们为什么要改呢? 这可就要好好说道说道了。...,只有迫不得已才会使用自定义的图标,也就是上面那种 SVG Icon,这样就导致了一个项目中同时存在字体图标SVG 图标两种使用方式,当然这也不是大问题。...所以此文我们讲的还是使用 SVG Icon,不同的是使用方式变了,也正如标题所说,这种方式更为优雅!!! 嗯?为什么使用 SVG Icon? 嗯,你还不知道为什么要使用 SVG Icon?...自定义 SVG 图标 最后就是我们自定义的图标了,虽然 iconify 提供了超级多的图标库,ElementPlus 里也有一些,但有时候 UI 设计师总是按套路出牌,非得自己设计,,,当然,这也没有问题

6.6K41
  • 可以将阿里图标库的icon、svg、unicode渲染到html的小工具 render.iconfont

    推荐理由:可以将阿里图标库的icon、svg、unicode渲染到html的小工具 render.iconfont,可以将阿里图标库的 icon、svg、unicode 渲染到 html 的小工具,为什么要用这个组件...怎么使用这个小工具,1.我们可以直接点击阿里的「iconfont」的下载代码,2.找到你下载好的代码,添加到你的项目中,3.记住你的路径,在你的 html 上,引入小工具,4.将需要图标化的容器,添加,...并且定义类名或者 id,5.实例化小工具,配置,path,描述:读取图标文件夹的路径,类型,默认值:`....===================== render.iconfont 可以将阿里图标库的 icon、svg、unicode 渲染到 html 的小工具 为什么要用这个组件?...1.font-class 引用 font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写直观,语意不明确的问题。

    1K00

    Vue项目中优雅使用icon

    ,一不小心就搞得整个网页的图标错位了 font库 再到后来就出现了font库,也就是字体图标库,它出现给了我们开发很大便利,使用起来也非常方便,字体图标为什么方便,因为我们可以直接从市面上的font字体图标库里找图标...搭建项目 怎么样才算优雅,首先我们在src目录下新建icons/文件夹,在icons/文件夹下建svg/文件夹,将来我们项目中svg图标都会统一放在这里 接下来我们在官网搞来一个svg图标 点击svg...,首先我们不能覆盖原有的svg解析loader,我们只需要把icons/svg这个文件夹下的svg文件解析打包即可,我们在vue.config.js中chainWebpack函数中配置,来看代码 //...方法,该方法主要是来获取文件绝对路径的,我们把使用路径的地方都使用该方法转为绝对路径,当然使用相对路径也是可以的,但是不太安全,平台解析相对路径有差异性,所以绝对路径是最安全的 svg sprites图标使用...,还远远不够,这样使用一个图标就得引入文件一次也太麻烦了,接着看下文 进阶-svg文件自动引入 知道为什么在icons/文件夹下还有一个存放svg文件的svg/文件夹吗,就是为了这一步自动化引入准备的

    2.2K20

    当webpack有了vite的速度

    (主要进行思路分析涉及具体源码,感兴趣的可以自己去阅读源码) 对于分析不感兴趣的大佬可以直接进入v5-run小结 #老规矩打一波推广 vue组件平台服务器最近搞了新的服务器了,欢迎大家去进行尝试!...线上访问地址:http://assemble.everbeon.top/assemble/#/Show/index 注:嫌背景粒子动画卡的可以点击右上角的小图标就可以关闭背景动画 复制代码 如何让webpack...在同一目中,不同工程依赖同一个npm,他们引入是相同的,并且是属于引用值相当于他们共享了这个npm的导出。...:my-svg-[name],引入名称则为(svg文件名为app.svg):my-svg-app symbolId: string }, // 全局导入...本项目中的三方依赖处理,有一定程度借鉴vite,所以现阶段代码较为相似,这也是为什么我没有急着做初始化缓存信息的原因,因为将来目标不一样,所以后期会进行修改该块内容。

    95440

    转转搭建 iconfont 平台实践

    比如导出为 png, svg 格式的文件,在项目中作为静态资源直接引用,或者上传到 CDN 作为外链引用。...、审核、编辑;人员角色的变动;项目的更新等日志信息,使系统的所有操作可追溯 svg2ttf:解析 svg 路径,转换成 ttf woff eot 等通用的字体文件,并打包上传到 CDN 项目改造 回顾我们之前列出的预期...使用方式 YIcon 原先的使用方式,类似于淘宝的 iconfont,需要在项目中点击“下载图标”按钮,把一大堆字体文件下载到本地,拷贝到项目中,然后按部就班地修改以下代码: 定义生成的 font-face...MySQL 数据库升级,语句优化和规范 升级 svg2ttf,解决版本过低导致的 svg 解析错乱 流程优化(包括上传、审核、版本更迭、角色权限等环节的各种 bug) 项目落地 这部分的工作虽然属于推动项目落地部分...比如之前 UI 并不需要自己把 svg 转换成 iconfont,所以在设计的时候也自然不会去考虑路径闭合、形状合并或者尺寸规范之类的问题,导致部分图标上传到平台后无法解析的问题。

    1.2K20

    如何从 vue-element-admin 迁移到 Fantastic-admin

    准备工作 首先你需要准备一份 Vue3版本 的模版源码,并确保能在本地正常启动运行。...全局资源 SVG 图标 vue-element-admin 将 svg 文件存放在 ./src/icons/svg/ 目录下,这部分的 svg 文件可直接拷贝到 Fantastic-admin 的 ..../src/assets/icon/ 目录下,并且我们还提供了 组件方便直接使用,详细可阅读《全局资源 - SVG图标》。...精灵图 这是 Fantastic-admin 单独提供的特性,如果在项目中使用了较多尺寸不大的素材图,你可以考虑使用精灵图的方式将多张小图合并成一张大图,通过 css 背景图定位的方式去展示使用,详细可阅读...,Fantastic-admin 还提供了很多额外的配置,详细可阅读《路由 - 导航配置》。

    81820

    从龟速 11s 到闪电 1s,详解前端性能优化之首屏加载

    图标 内容(点击展开/收起) 这一步我们来优化部分冗余的旧SVG图标被打包进去的情况,一般项目中SVG使用方式都是在iconfont生成JS然后引入。...这种做法 直观,每次都得去iconfont复制名称使用 每次增删改图标需要重新替换整个JS 不能按需加载,没使用到的也会一起打包,特别是UI换图标时一般不会将旧图标删除.......添加自定义SVG友善,必须上传iconfont添加到一起再下载 更优的SVG玩法 新增/修改图标 在iconfont下载UI上传或者其他地方找的任意SVG图标放入icons/svg/下 页面中使用全局...svg组件,传入复制下SVG的文件名即可 删除 只需要去掉使用的地方,然后删除对应图标即可 要实现上述效果,只需要 引入svg-sprite-loader // install npm i svg-sprite-loader...目前了解到的有两种方案 使用webpack-ant-icon-loader[3] (异步加载) 重定向到本地文件来控制 (推荐),使用alia将将@ant-design/icons/lib/dist指向项目中

    2.7K10

    「首席架构师推荐」React生态系统大集合

    用户界面库 Maple.js - 将Web组件的概念引入React react-i13n - 一种高性能,可扩展且可插拔的方法,用于检测React应用程序 react-icons - svgReact流行图标包的图标...- 将你的svg组件变为另一个 react-hooks-svgdrawing - 使用React钩子绘制SVG 模型库 mori - ClojureScript的持久数据结构和支持API NestedTypes...google map React组件 react-mapbox-gl - 一个mapbox-gl-js包装器,使APIReact友好 google-maps-react - 使用React,延迟加载依赖,...SplashWalls NBAreact React Native Boilerplates 创建React Native App - 在没有构建配置的任何操作系统上创建React Native应用程序,包含或包含...Pete Hunt:可预测,不正确 - Mountain West JavaScript 2014 黑客方式:重新思考Facebook上的Web应用程序开发 Christopher Chedeau:为什么

    12.4K30

    如何在Vite中处理各种静态资源?

    图片加载图片是项目中最常用的静态资源之一,本身包括了非常多的格式,诸如 png、jpeg、webp、avif、gif,当然,也包括经常用作图标svg 格式。...SVG 组件加载在不同的前端框架中的实现不太相同,社区中也已经了有了对应的插件支持:Vue2 项目中可以使用 vite-plugin-vue2-svg插件。...雪碧图优化在实际的项目中我们还会经常用到各种各样的 svg 图标,虽然 svg 文件一般体积不大,但 Vite 中对于 svg 文件会始终打包成单文件,大量的图标引入之后会导致网络请求增加,大量的 HTTP...的请求假设页面有 100 个 svg 图标,将会多出 100 个 HTTP 请求,依此类推。...,发现雪碧图已经生成雪碧图包含了所有图标的具体内容,而对于页面每个具体的图标,则通过 use 属性来引用雪碧图的对应内容如此一来,我们就能将所有的 svg 内容都内联到 HTML 中,省去了大量 svg

    2.3K30

    认识 Iconfont 以及什么是 .eot、.woff、.ttf、.svg「建议收藏」

    你可以选择下载到本地,在你的项目中引入这种字体,这样即便没有网络的情况也可以使用图标。...二、字体格式 —— .eot、.woff、.ttf、.svg 1....概述 在阿里图标库中下载图标本地后,目录结构如下: 图标库下载到本地目录结构 第一次看到这几个文件时,不知道有什么用,可能会直接删除,但万万不可,打开 iconfont.css 文件可以在 @font-face...使用 @font-face 引入字体格式 因为各个浏览器对字体格式的兼容,作为前端开发人员,我们需要考虑的全面性,将各个格式的字体都引入进来,这样就不怕刁钻的用户使用哪种浏览器了。.../fonts/singlemalta-webfont.svg#defineName') format('svg'); font-weight: normal; font-style: normal; }

    3.2K10

    第104天:web字体图标使用方法

    第三步:下载到本地 ? 下载到本地,然后解压。会将合并后的字体文件及自动生成的css全部下载 ?...2、FontClass方式 FontClass是Unicode使用方式的一种变种,主要是解决Unicode书写直观,语意不明确的问题。...xxx是图标的名字,你可以在网站上修改图标的名字(FontClass和Symbol都可以),但是切记如果你使用了在线链接,则必须在网站上更新在线链接,然后将该链接更新到你的项目中,如果你是本地使用,则必须下载最新的代码...,然后更新到你的项目中,否则修改无效 ?...这种用法其实是做了一个svg的集合,与另外两种相比具有如下特点: 支持多色图标了,不再受单色限制 通过一些技巧,支持像字体那样,通过font-size,color来调整样式(对于前两种也是同样适用的,fontsize

    1.4K10

    前端不止:请告诉我,你要什么样的图标

    ---- 一个图标的生命周期(工作流程) 关于图标的生命周期,在我个人所经历的开发项目中,有以下两种: 第一种方式:图标库(选择阶段) -> 图标使用(开发阶段) 第二种方式:图标设计...(ThoughtWorks官网“Contact with us”图标为什么要先介绍图标的使用,而一笔跳过导出过程呢?...设计师可以轻松的在设计绘图软件(AI,PS)的帮助下导出SVG格式的图标/图片。...获得IconFont的方式也很简单,设计师将图标通过AI/PS转成SVG文件,然后由开发人员通过工具(在线或者本地)转换为IconFont,比如:国外的icomoon.io,国内的iconfont.cn...请看下面这张图,敏捷的开发过程中不同角色共享职责,那么设计师和开发也例外。

    1.6K70

    小程序实践:基础内容icon,关于图标的5个实现方案等

    如果文本是从后台动态取出来的,穿插的图标的类型也是动态取出来的,能否实现解析、渲染?这个问题留给读者朋友们思考。 2)icon图标是怎么实现的,原理是什么?...回到我们的矢量字体图标方案上来。既然字符可以在字体文件里定义,图标为什么不可以呢?我们可以定义任何一个矢量图形,与一个unicode对应,哪怕这个unicode在其它字体中已被使用也没有关系。...没有这种问题的原因,可能有两个: a)css font-face样式里声明的字体文件,在安全域名里,在本地校验域名的情况下可以访问,在真机或真实环境中不行。...b)即使是真机,各种手机微信内嵌的浏览器内核也存有差异,排除是字体文件的兼容性问题。可以将svg以外的字体格式全部删除,尤其是排在前面的。...5)weui组件库里的icon组件的图标,如何取出来,保存到本地? ? 这是 weui.io/#icons 里的图标样式,有人觉得好看,想把文件拿出来用。

    2K00

    我是如何让公司后台管理系统焕然一新的(上) -性能优化

    ,在vue-cli3中可以通过externals配置,将第三方的类库的引用地址从本地指向你提供的CDN地址 externals只适用于ES Module的默认导入 ?...图标 相对于用一张图片来表示图标svg拥有更好的图片质量,体积更小,并且不需要开启额外的http请求,svg是一个未来的趋势,阿里的图标库iconfont支持导出svg格式的图标,但是在项目中需要封装一个支持...图标的自动导入 全局组件的自动导入 vuex: ?...这样在创建一个新的模块时,不需要在index.js中用import引入,在modules中再声明一遍了 全局组件和svg图标: ?...避免了每创建一个全局组件都需要引入,在调用一次Vue.component的过程,而当加载到Svg组件会自动扫描icons文件夹,将所有svg图标导入进来 有兴趣的朋友可以看看我另一篇介绍这个api的博客

    2.7K20

    Webpack to Vite, 为开发提速!

    Webpack to Vite 背景 最近,就 前端开发过程中的痛点及可优化 做了一次收集。 其中,构建耗时、项目编译速度慢 的字眼出现了好几次。 随着业务的快速发展,我们很多项目的体积也快速膨胀。...想了一下:Vite 不知道 typeings 文件是不需要被编译的,需要告诉编译器编译这个文件。...无法识别 svg 我们在使用 svg 作为图标组件的时候, 一般是: import Icon from '@ant-design/icons'; import ErrorSvg from '@/assets...看了一下源码, 这个后缀是用来作为标识符的, image.png 如果后缀匹配上是component, 就解析文件, 并缓存, 最后返回结果: image.png 知道原理之后, 就需要把全部的 .svg...至此, 整个 app 已经能在本地跑起来了, build 也没问题。 7. 线上打包构建时, 内存溢出 本地能跑起来, 打包也没问题, 后面当然是放到线上跑一跑啦。 立刻安排!

    3.1K20
    领券