使用https://github.com/kristerkari/react-native-svg-transformer
在这个包中,提到.svg
React Native v0.57及更低版本不支持文件,因此请使用.svgx
对svg文件扩展名。
对于Web或react-native-web使用https://www.npmjs.com/package/@svgr/webpack
要使用react-native-svg-uri
react-native版本0.57及更低版本渲染svg文件,您需要在根项目中添加以下文件
注意:将扩展名更改svg
为svgx
步骤1:将文件添加transformer.js
到项目的根目录
const cleanupSvg = require('./cleanup-svg');
const upstreamTransformer = require("metro/src/transformer");
const svgExtensions = ["svgx"]
function fixRenderingBugs(content) {
return "module.exports = `" + content + "`";
}
module.exports.transform = function ({ src, filename, options }) {
if (svgExtensions.some(ext => filename.endsWith("." + ext))) {
return upstreamTransformer.transform({
src: fixRenderingBugs(src),
filename,
options
})
}
return upstreamTransformer.transform({ src, filename, options });
}
步骤2:添加rn-cli.config.js
到项目的根目录
module.exports = {
getTransformModulePath() {
return require.resolve("./transformer");
},
getSourceExts() {
return [ "svgx"];
}
};
上面提到的解决方案也可以在生产应用中使用✅