Utilisez https://github.com/kristerkari/react-native-svg-transformer
Dans ce package, il est mentionné que les .svg
fichiers ne sont pas pris en charge dans React Native v0.57 et versions antérieures, utilisez donc l' .svgx
extension 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-uri
de la version 0.57 et inférieure de react-native, vous devez ajouter les fichiers suivants à votre projet racine
Remarque: remplacez l'extension svg
parsvgx
é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 ✅