这篇文章主要介绍了在反应中如何使用svg的各种方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
,,,,,,,,,,,,,,,,,,,,,,,,,,,,这篇文章给大家介绍的内容是关于在反应中使用svg的各种方法总结(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
<>强优势强>
- <李>
svg可被非常多的工具读取和修改(比如vscode)
李> <李>不失真,放大缩小图像都很清晰
李> <李>svg文件是纯粹的XML,也是一种DOM结构
李> <李>使用方便,设计软件可以直接导出
李><强>兼容性强>
上一张兼容性图表,或到caniuse.com查看
兼容性也不是什么大问题。当然,如果你的网站还是需要兼容这些旧式的浏览器,社区上也有对应的方案,比如张鑫旭的一些SVG向下兼容优雅降级技术
<强>使用方式强>
方案多种多样,适合你的需求的才是最优的
<强>直接在模板中使用强>
const Home =,(),=祝辞,( ,,,& lt; div> ,,,,,,,& lt; svg 宽度={300},身高={300}比; ,,,,,,,,,,,& lt; rect 宽度=?00%“,身高=?00%“,风格={{,填补:& # 39;紫色# 39;,,strokeWidth:, 1,中风:,& # 39;rgb(0, 0, 0) & # 39;,}},/比; ,,,,,,,& lt;/svg> ,,,& lt;/div> )
- <李>
如果每个svg要前端画,对前端要求较高。李李
> <>如果每个图标从设计师给的svg代码里面拷,要改各种标签不说,改错了还报错
李>这样的方式并不友好
<强>把svg转成字体强>
<强> iconfont 强>
直接把代码复制到项目css中,定制你的标签样式,参考阿里官方的文章,使用起来简单粗暴,而且浏览器兼容性高。但是需要手动上传(有其他方案欢迎补充),另外如果要部署到阿里的cdn以外的环境需要先下载下来,再上传到目标环境。略显麻烦。
此外还有icomoon等等都有提供类似的解决方案
<强>把svg转成反应组件强>
请注意:以下会包含打印稿相关的配置
<强>项目构建前转换强>
例:
typescript-react-svg-icon-generator,需要我们有一条前置命令去把svg做转换。
,美元node 。/svg-generator。js
使用:
import Icon 得到& # 39;。/图标# 39; export default  class App extends  Component { ,,,渲染(),{ ,,,,,,,return & lt; Icon 类型=& # 39;关闭# 39;,颜色=& # 39;# 748 & # 39;,宽度={500},身高={100},/比; ,,,} }
此外,svgr(下面提到的)同样提供这种方案,请自行查阅
<强>项目构建时转换强>
例:
@svgr/webpack
嗯。没的错,这是一个webpack加载程序。
//,全局声明svg 组件定义 declare interface  SvgrComponent extends React.StatelessComponent< React.SVGAttributes祝辞,{} declare module & # 39; * . # 39;, { ,,,const 内容:SvgrComponent ,,export default 内容 }
)
这个方案好处不仅体现在构建时转换,更重要的是它完全继承了SVGAttributes,不需要额外的学习成本!可参考项目ts-react-webpack4,或脚手架steamer-react-ts
此外,还有react-svg, svg-react-loader等同样是以类似的方式实现的。
感谢你能够认真阅读完这篇文章,希望小编分享的“在反应中如何使用svg的各种方法”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!