Sử dụng https://github.com/kristerkari/react-native-svg-transformer
Trong gói này có đề cập rằng .svg
các tệp không được hỗ trợ trong React Native v0.57 trở xuống, vì vậy hãy sử dụng .svgx
phầ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-uri
phiê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 svg
thànhsvgx
bước 1: thêm tệp transformer.js
và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.js
và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 ✅