您好,登錄后才能下訂單哦!
這篇文章主要介紹react中怎么優雅的使用svg,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
react中優雅的使用svg的方法:首先安裝【svg-sprite-loader】,并配置【/config/webpack.config.js】;然后在src文件夾下新建一個icons文件夾;最后設置SvgIcon組件。
react中優雅的使用svg的方法:
1、安裝 svg-sprite-loader
yarn add svg-sprite-loader --dev
or
npm i svg-sprite-loader -D
2、配置 /config/webpack.config.js (yarn eject 后的配置 )
注意:新添加的loader一定要放到file-loader之前
原因:webpack的loader執行是從后往前執行的
loader 里添加如下配置
{ test: /\.(eot|woff2?|ttf|svg)$/, exclude: path.resolve(__dirname, "../src/icons"), //不處理指定svg的文件(所有使用的svg文件放到該文件夾下) use: [ { loader: "url-loader", options: { name: "[name]-[hash:5].min.[ext]", limit: 5000, // fonts file size <= 5KB, use 'base64'; else, output svg file outputPath: "font", publicPath: "font" } } ] }, { test: /\.svg$/, loader: "svg-sprite-loader", include: path.resolve(__dirname, "../src/icons"), //只處理指定svg的文件(所有使用的svg文件放到該文件夾下) options: { symbolId: "icon-[name]" //symbolId和use使用的名稱對應 <use xlinkHref={"#icon-" + iconClass} /> } },
3、src 文件夾下新建一個 icons 文件夾
icons 文件夾下新建 svg 文件夾放 svg 文件
目錄
index.js 加載所有 svg 文件夾下 svg 文件
const requireAll = requireContext => requireContext.keys().map(requireContext); const svgs = require.context("./svg", false, /\.svg$/); requireAll(svgs);
然后一定要在react入口文件 src/index.js中導入src/icons/index.js
代碼如下
import "./icons";
4、SvgIcon 組件
src/components 文件夾下建一個 SvgIcon 文件夾 添加 index.jsx 文件
目錄
index.jsx 組件內容如下:
import React from "react"; import PropTypes from "prop-types"; import styles from "./style.less"; //已啟用 CSS Modules const SvgIcon = props => { const { iconClass, fill } = props; return ( <i aria-hidden="true" className="anticon"> <svg className={styles["svg-class"]}> <use xlinkHref={"#icon-" + iconClass} fill={fill} /> </svg> </i> ); }; SvgIcon.propTypes = { // svg名字 iconClass: PropTypes.string.isRequired, // 填充顏色 fill: PropTypes.string }; SvgIcon.defaultProps = { fill: "currentColor" }; export default SvgIcon;
style.less
.svg-class { display: inline-block; overflow: hidden; font-size: 14px; min-width: 14px; width: 1em; height: 1em; }
5、使用
把要使用的的svg文件放到src/icons/svg目錄下,使用的時候把svg名稱給iconClass即可
import React from "react"; import SvgIcon from "@/components/SvgIcon"; const Demo = () => { const svgName="content" // content.svg 已經放到 /src/icons/svg/ 目錄下 return <SvgIcon iconClass={svgName} />; }; export default Demo;
以上是“react中怎么優雅的使用svg”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。