ใช้https://github.com/kristerkari/react-native-svg-transformer
ในแพ็คเกจนี้มีการระบุว่า.svg
ไฟล์ไม่รองรับใน React Native v0.57 และต่ำกว่าดังนั้นให้ใช้.svgx
นามสกุลสำหรับไฟล์ svg
สำหรับการใช้งานเว็บหรือตอบสนองพื้นเมืองhttps://www.npmjs.com/package/@svgr/webpack
ในการเรนเดอร์ไฟล์ svg โดยใช้react-native-svg-uri
react-native เวอร์ชัน 0.57 และต่ำกว่าคุณต้องเพิ่มไฟล์ต่อไปนี้ในโปรเจ็กต์รูทของคุณ
หมายเหตุ: เปลี่ยนนามสกุล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"];
}
};
โซลูชันที่กล่าวถึงข้างต้นจะใช้งานได้ในแอปการผลิตด้วย✅