當我們添加一張svg圖片顯示時,react提示找不到文件。 我們可以在全局文件global.d.ts內,添加圖片類型的聲明: 詳見《TypeScript 引用資源文件後提示找不到的錯誤處理方案》 聲明之後,引用不報錯了。然後我們看看svg圖片,裡面有顏色及其它設置: 1 <?xml version= ...
當我們添加一張svg圖片顯示時,react提示找不到文件。
我們可以在全局文件global.d.ts內,添加圖片類型的聲明:
詳見《TypeScript 引用資源文件後提示找不到的錯誤處理方案》
聲明之後,引用不報錯了。然後我們看看svg圖片,裡面有顏色及其它設置:
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後高亮
理論上添加xml代碼解析,然後將svg以組件形式添加渲染,是可行的。
在網上逛了一圈,發現大多數都比較水,很多是通過載入全局的圖片,作為單獨組件或者緩存來使用,不適用
react-inlinesvg
發現了一個比較不錯的開源,超級不錯,安利!
https://github.com/gilbarbara/react-inlinesvg
安裝:npm i react-inlinesvg 或者 yarn add react-inlinesvg
添加引用:import SVG from 'react-inlinesvg';
添加圖片:
1.import BackPng from '../../../../assets/images/back.svg'; 2.<SVG className="backIcon" src={BackPng} /> 設置動態樣式: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 }