React项目中使用svg组件

使用react-svg模块

  1. 安装依赖 yarn add -D react-svg
  2. 新建index.js文件

import React from 'react';
import { ReactSVG } from 'react-svg';

function getAll(context) {
  return context.keys().reduce((o, modulePath, i) => {
    o[modulePath.replace(/.\/|.svg/g, '')] = props => {
      return <ReactSVG src={context.keys().map(context)[i]} {...props} />;
    };
    return o;
  }, {});
}

// 当前组件下的icons目录,存放svg图标
export default getAll(require.context('./icons', false, /\.svg$/));

3.使用

import SvgIcon from '@/components/SvgIcon';

// icons目录下名为Upload.svg图标
<SvgIcon.Upload />

使用svg-sprite-loader模块

  1. 安装依赖 yarn add -D svg-sprite-loader
  2. 配置loader
{
  test: /\.svg$/,
  loader: 'svg-sprite-loader',
  include: path.resolve(__dirname, '../src/icons'), // 处理指定svg的文件
  options: {
    symbolId: 'icon-[name]'
  }
},
  1. 在主入口导入所有icons
import './icons';
  1. 编写SvgIcon组件
import React from 'react';
import PropTypes from 'prop-types';

const SvgIcon = props => {
  const { iconClass } = props;
  return (
    <svg aria-hidden="true" className="svg-icon" >
      <use xlinkHref={"#icon-" + iconClass}  />
    </svg>
  );
};

SvgIcon.propTypes = {
  iconClass: PropTypes.string.isRequired
};

export default SvgIcon;

  1. 使用
import SvgIcon from '@/components/SvgIcon';

<SvgIcon iconClass="upload" />  
使用 `react-native-svg` 和 `react-native-svg-transformer` 加载本地 SVG 图像,你可以按照以下步骤进行操作: 1. 首先,确保你已经在项目安装了 `react-native-svg` 和 `react-native-svg-transformer` 依赖。你可以通过运行以下命令来安装它们: ``` npm install react-native-svg react-native-svg-transformer ``` 2. 在项目的根目录下创建一个名为 `metro.config.js` 的文件(如果已存在,请跳过此步骤)。 3. 在 `metro.config.js` 文件添加以下内容: ```javascript module.exports = { transformer: { assetPlugins: ['react-native-svg-transformer'], }, }; ``` 4. 接下来,在你的组件使用 `react-native-svg` 的 `<SvgUri>` 组件来加载本地 SVG 图像。首先,确保你的 SVG 图像位于项目的 `assets` 文件夹。 ```javascript import React from 'react'; import { View } from 'react-native'; import SvgUri from 'react-native-svg-uri'; const MyComponent = () => { return ( <View> <SvgUri width={200} height={200} source={require('./assets/myImage.svg')} /> </View> ); }; export default MyComponent; ``` 在上面的示例,我们使用 `require` 方法加载位于 `assets` 文件夹的 `myImage.svg` 图像,并将其作为 `source` 属性传递给 `<SvgUri>` 组件。你可以根据自己的需要调整宽度和高度。 5. 确保你在重新启动 Metro Bundler 之前完成了以上步骤。你可以通过运行以下命令重新启动 Metro Bundler: ``` npx react-native start --reset-cache ``` 这样,你就可以使用 `react-native-svg` 和 `react-native-svg-transformer` 成功加载和显示本地 SVG 图像了。 希望对你有所帮助!如有任何疑问,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值