Sử dụng https://github.com/kristerkari/react-native-svg-transformer
Trong gói này có đề cập rằng .svgcác tệp không được hỗ trợ trong React Native v0.57 trở xuống, vì vậy hãy sử dụng .svgxphần mở rộng cho các tệp svg.
Để sử dụng web hoặc react-native-web, https://www.npmjs.com/package/@svgr/webpack
Để hiển thị các tệp svg bằng cách sử dụng react-native-svg-uriphiên bản react-native 0.57 trở xuống, bạn cần thêm các tệp sau vào dự án gốc của mình
Lưu ý: thay đổi phần mở rộng svgthànhsvgx
bước 1: thêm tệp transformer.jsvào thư mục gốc của dự án
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 });
}
bước 2: thêm rn-cli.config.jsvào thư mục gốc của dự án
module.exports = {
getTransformModulePath() {
return require.resolve("./transformer");
},
getSourceExts() {
return [ "svgx"];
}
};
Các giải pháp được đề cập ở trên cũng sẽ hoạt động trong các ứng dụng sản xuất ✅