Retour au blog

Guide d'importation React Native SVG : react-native-svg + SvgXml

Découvrez deux manières pratiques d'utiliser SVG dans React Native avec React-native-svg : les importations basées sur un transformateur et le rendu dynamique SvgXml.

26 janv. 2026React NativeSVGreact-native-svgDéveloppement mobileIntégration SVGreact-native-svg-transformer

Guide d'importation React Native SVG : react-native-svg + SvgXml

SVG (Scalable Vector Graphics) est devenu un format de ressource graphique incontournable dans le développement de React Native. Comparé aux formats bitmap traditionnels (PNG, JPG), SVG offre une mise à l'échelle sans perte, des tailles de fichiers plus petites et un contrôle de style plus flexible. Cet article fournit une introduction détaillée à deux méthodes courantes d'importation et d'utilisation de fichiers SVG dans des projets React Native, ainsi que des exemples de code complets et des recommandations d'optimisation des performances.

Pourquoi utiliser SVG dans React Native

SVG (Scalable Vector Graphics) apporte plusieurs avantages clés au développement d'applications mobiles :

  • Mise à l'échelle parfaite : les graphiques restent nets quelle que soit la taille ou la résolution de l'écran
  • Taille de fichier plus petite : les fichiers SVG sont généralement plus légers que plusieurs ensembles d'actifs PNG.
  • Style dynamique : les couleurs, les tailles et d'autres attributs peuvent être modifiés dynamiquement via des accessoires
  • Cohérence : rendu identique sur les plates-formes iOS et Android

Dépendance principale : react-native-svg

La première étape pour utiliser les images SVG dans React Native consiste à installer la bibliothèque react-native-svg, qui permet de rendre nativement les fichiers SVG dans les applications React Native.

npm install react-native-svg
# or
yarn add react-native-svg

Remarque : Pour React Native 0.60 et supérieur, la liaison est généralement automatique. Pour les versions antérieures, vous devrez peut-être lier manuellement les modules natifs.

Méthode 1 : Utilisation de react-native-svg-transformer

Il s'agit de l'approche la plus recommandée, vous permettant d'importer directement des fichiers SVG en tant que composants, tout comme dans les projets Web React.

Installation et configuration

Tout d'abord, installez le transformateur :

npm install --save-dev react-native-svg-transformer
# or
yarn add --dev react-native-svg-transformer

Créez ou modifiez ensuite metro.config.js à la racine de votre projet :

const { getDefaultConfig } = require("metro-config");

module.exports = (async () => {
  const {
    resolver: { sourceExts, assetExts },
  } = await getDefaultConfig();

  return {
    transformer: {
      babelTransformerPath: require.resolve("react-native-svg-transformer"),
    },
    resolver: {
      assetExts: assetExts.filter((ext) => ext !== "svg"),
      sourceExts: [...sourceExts, "svg"],
    },
  };
})();

Exemple d'utilisation

Après configuration, vous pouvez importer directement les fichiers SVG :

import React from "react";
import { View } from "react-native";
import Logo from "./assets/logo.svg";

const MyComponent = () => (
  <View>
    <Logo width={100} height={100} fill="#3B82F6" />
  </View>
);

export default MyComponent;

Cette méthode vous permet de traiter les fichiers SVG comme des composants React Native classiques, ce qui les rend faciles à importer et à utiliser dans toute votre application.

Avantages :

  • Type-safe avec une excellente expérience de développement
  • Prend en charge le contrôle de style dynamique via des accessoires
  • Excellentes performances avec transformation au moment de la compilation

Cas d'utilisation : bibliothèques d'icônes statiques, immobilisations dans les systèmes de conception

Méthode 2 : utilisation de SvgXml pour le chargement dynamique

Le composant SvgXml de react-native-svg vous permet de rendre des SVG à partir de chaînes XML, ce qui offre plus de flexibilité dans les scénarios dynamiques.

Utilisation de base

import React from "react";
import { SvgXml } from "react-native-svg";

const svgMarkup = `
  <svg width="100" height="100" viewBox="0 0 100 100">
    <circle cx="50" cy="50" r="40" fill="#10B981" />
  </svg>
`;

const DynamicIcon = () => <SvgXml xml={svgMarkup} width="100%" height="100%" />;

export default DynamicIcon;

Chargement dynamique à partir de fichiers

SvgXml est particulièrement utile lorsque vous devez charger des SVG depuis le système de fichiers ou le réseau :

import React, { useState, useEffect } from "react";
import { SvgXml } from "react-native-svg";
import RNFS from "react-native-fs";

const LoadableSvg = ({ filePath }) => {
  const [xml, setXml] = useState("");

  useEffect(() => {
    async function loadSvg() {
      try {
        const svgContent = await RNFS.readFile(filePath);
        setXml(svgContent);
      } catch (error) {
        console.error("Error loading SVG file", error);
      }
    }
    loadSvg();
  }, [filePath]);

  return xml ? <SvgXml xml={xml} width="100%" height="100%" /> : null;
};

Avantages :

  • Prend en charge le chargement dynamique d'exécution
  • Peut récupérer les SVG à partir des API ou des serveurs distants
  • Gestion flexible du contenu généré par les utilisateurs

Considérations : Peut rencontrer des problèmes de performances lors du rendu répété de SVG complexes ou dynamiques, car il analyse XML au moment de l'exécution.

Stockage et organisation des fichiers SVG

Dans les projets React Native, vous stockez généralement les fichiers SVG dans un dossier d'actifs au sein de la structure de votre projet, puis vous les importez comme d'autres ressources.

Structure de répertoire recommandée :

src/
  assets/
    icons/
      arrow-left.svg
      arrow-right.svg
    logos/
      brand-primary.svg
      brand-secondary.svg
  components/
    icon.tsx

Prévisualiser et valider dans SVG Viewer

Avant d'intégrer les SVG dans votre projet React Native, il est recommandé de les prévisualiser et de les valider dans SVG Viewer :

  1. Vérifiez viewBox : assurez-vous que viewBox est correctement configuré pour éviter les problèmes de recadrage ou de mise à l'échelle.
  2. Nettoyer le code redondant : supprimez les métadonnées et les attributs de l'éditeur ajoutés par les outils de conception
  3. Vérifier les chemins : Confirmez que les données du chemin sont complètes et optimisées
  4. Test de mise à l'échelle : prévisualisez à différentes tailles pour garantir que les effets visuels répondent aux attentes

L'utilisation d'un SVG Viewer vous aide à découvrir les problèmes pendant le développement, ce qui vous fait gagner du temps lors du débogage sur les appareils mobiles.

Optimisation des SVG pour de meilleures performances

Lors de l'utilisation de SVG dans React Native, l'optimisation des fichiers est particulièrement importante :

  1. Simplifiez les chemins : utilisez des outils comme SVG Optimizer ou SVGO pour réduire les points de chemin
  2. Supprimer les éléments inutilisés : Supprimez les calques masqués et les groupes vides
  3. Fusionner les styles en double : extrayez les attributs répétés dans des styles partagés
  4. Précision du contrôle : conservez les coordonnées du chemin à 2-3 décimales

Les SVG optimisés se chargent non seulement plus rapidement, mais s'affichent également mieux, en particulier dans les scénarios à haute fréquence comme le défilement de liste.

Recommandations pratiques

Basés sur une expérience réelle de projet, voici quelques conseils pratiques :

  1. Convention de dénomination unifiée : établissez des conventions de dénomination claires pour les fichiers SVG, tels que icon-home.svg, logo-brand.svg
  2. Encapsuler les composants communs : créez un composant Icône pour gérer de manière centralisée toutes les importations et l'utilisation des icônes.
  3. Définitions de types : ajoutez des définitions de type TypeScript aux composants SVG pour une meilleure expérience de développement
  4. Stratégie de chargement paresseux : pour les grands jeux d'icônes, envisagez le chargement à la demande plutôt que de tout regrouper

Résumé

Il existe plusieurs façons d'utiliser SVG dans React Native, et le choix de la bonne méthode dépend de votre scénario spécifique :

  • Bibliothèques d'icônes statiques : utilisez react-native-svg-transformer pour la meilleure expérience de développement
  • Contenu dynamique : utilisez SvgXml pour le chargement et le traitement de l'exécution
  • Scénarios critiques pour les performances : optimisez les fichiers SVG à l'avance et contrôlez la complexité

Quelle que soit la méthode que vous choisissez, il est recommandé de valider au préalable la qualité du fichier dans un SVG Viewer pour garantir des effets visuels idéaux sur les appareils mobiles. Grâce à des flux de travail appropriés et à la prise en charge des outils, SVG deviendra une ressource graphique indispensable dans les applications React Native.

Prochaines étapes

  • Utilisez SVG Viewer pour vérifier viewBox, l'alignement et la mise à l'échelle avant l'importation.
  • Exécutez SVG Optimizer pour réduire la complexité de SVG et obtenir un rendu mobile plus fluide.
  • Convertissez les actifs avec SVG to React Native lorsque vous souhaitez un code de composant prêt à être copié.

Articles connexes

Continuez à explorer les flux de travail SVG et les conseils de production.