前言
`ReactNative` 中会用`Svg`作为一个比较普遍的需求,带大家来实现。
我们都知道设计在出图的时候,会有区分一倍多倍图。这样就带来了一个问题,在大屏幕使用小图的时候出现图片模糊失真的情况发生。这时候 Svg 使用是一个很好方案,下面已RN工程为例。
安装库
# 主库 npm install react-native-svg --save # babel解析库, 为了兼容开发环境,大家根据需求来配置 npm install babel-plugin-inline-import --save-dev
复制
配置
在项目里的babel.config.js配置如下
module.exports = { # 配置babel解析插件 plugins: [ [ 'babel-plugin-inline-import', { extensions: ['.svg'], }, ], };
复制
在项目src下添加declarations.d.ts,为了兼容引入本地svg不会ts工程不会报错。
# declarations.d.ts declare module '*.svg' { import React from 'react'; import { SvgProps } from 'react-native-svg'; const content: React.FC<SvgProps>; export default content; }
复制
使用
import * as React from 'react' import {View} from 'react-native' import {SvgXml} from 'react-native-svg' const SvgIcon = (props) => { return <View style={{flex: 1}}> <SvgXml xml={props.xml} {...props} /> </View> } export default SvgIcon
复制