Utilisez https://github.com/kristerkari/react-native-svg-transformer
Dans ce package, il est mentionné que les .svgfichiers ne sont pas pris en charge dans React Native v0.57 et versions antérieures, utilisez donc l' .svgxextension pour les fichiers svg.
Pour le Web ou React-Native-Web, utilisez https://www.npmjs.com/package/@svgr/webpack
Pour rendre les fichiers svg à l'aide react-native-svg-uride la version 0.57 et inférieure de react-native, vous devez ajouter les fichiers suivants à votre projet racine
Remarque: remplacez l'extension svgparsvgx
étape 1: ajouter un fichier transformer.jsà la racine du projet
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 });
}
étape 2: ajouter rn-cli.config.jsà la racine du projet
module.exports = {
getTransformModulePath() {
return require.resolve("./transformer");
},
getSourceExts() {
return [ "svgx"];
}
};
Les solutions mentionnées ci-dessus fonctionneront également dans les applications de production ✅