1、安装组件
npm install react-native-svg
npm install --save-dev react-native-svg-transformer
2、配置metro打包器
配置文件:metro.config.js
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
/**
* Metro configuration
* https://reactnative.dev/docs/metro
*
* @type {import('@react-native/metro-config').MetroConfig}
*/
const defaultConfig = getDefaultConfig(__dirname);
const { assetExts, sourceExts } = defaultConfig.resolver;
const config = {
transformer: {
babelTransformerPath: require.resolve("react-native-svg-transformer")
},
resolver: {
assetExts: assetExts.filter((ext) => ext !== "svg"),
sourceExts: [...sourceExts,"svg"]
}
};
module.exports = mergeConfig(getDefaultConfig(__dirname), config);

3、添加TypeScript类型声明
在项目根目录中添加文件【declarations.d.ts】并编写内容如下:
declare module "*.svg" {
import React from "react";
import { SvgProps } from "react-native-svg";
const content: React.FC<SvgProps>;
export default content;
}

4、在tsconfig.json文件中添加TypeScript类型声明文件
{
"extends": "@react-native/typescript-config",
"compilerOptions": {
"types": ["jest"],
"esModuleInterop": true
},
"include": [
"**/*.ts",
"**/*.tsx",
"declarations.d.ts"
],
"exclude": ["node_modules", "Pods"]
}

5、使用svg文件
import Back from '../../assets/svg/back.svg';
export default function FirstLoginPage(){
const storage = createMMKV();
return (
<View style={styles.container}>
<Back />
</View>
);
}
