当咱们添加一张svg图片显示时,react提示找不到文件。html
咱们能够在全局文件global.d.ts内,添加图片类型的声明:react
详见《TypeScript 引用资源文件后提示找不到的错误处理方案》git
声明以后,引用不报错了。而后咱们看看svg图片,里面有颜色及其它设置:github
1 <?xml version="1.0" encoding="UTF-8"?> 2 <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 3 <title>窗口_返回</title> 4 <g id="控件" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> 5 <g id="窗口_返回"> 6 <rect id="Rectangle-6" fill="#D8D8D8" opacity="0" x="0" y="0" width="24" height="24"></rect> 7 <path d="M8.35417135,12.9957726 C8.13320936,12.7345458 8,12.3967967 8,12.0279541 C8,11.6586058 8.13357489,11.3204363 8.3550807,11.0590615 L8.3521103,11.0564202 L14.356041,4.51971371 L14.3599873,4.52318728 C14.635253,4.20288524 15.0434555,4 15.4990737,4 C16.3280124,4 17,4.67157288 17,5.5 C17,5.8870199 16.8533375,6.23980607 16.6125263,6.50587693 L16.6210783,6.51340439 L11.5390798,12.0228281 L16.5124905,17.3935277 C16.8121157,17.6677653 17,18.0619548 17,18.5 C17,19.3284271 16.3280124,20 15.4990737,20 C15.0262153,20 14.6044287,19.7814702 14.3293154,19.439953 L8.35278214,12.9970098 L8.35417135,12.9957726 L8.35417135,12.9957726 Z" id="Oval-43-Copy-3" fill="#808080"></path> 8 </g> 9 </g> 10 </svg>
是否能够根据一张svg,显示不一样的效果?好比hover后高亮npm
理论上添加xml代码解析,而后将svg以组件形式添加渲染,是可行的。缓存
在网上逛了一圈,发现大多数都比较水,不少是经过加载全局的图片,做为单独组件或者缓存来使用,不适用svg
发现了一个比较不错的开源,超级不错,安利!post
https://github.com/gilbarbara/react-inlinesvgurl
安装:npm i react-inlinesvg 或者 yarn add react-inlinesvgspa
添加引用:import SVG from 'react-inlinesvg';
添加图片:
1 &:hover { 2 path { 3 fill: #4ecb78; 4 } 5 .backContent { 6 color: #4ecb78; 7 } 8 } 9 &:active { 10 path { 11 fill: #2baf57; 12 } 13 .backContent { 14 color: #2baf57; 15 } 16 }