Maison > interface Web > js tutoriel > Importation de fichiers SVG dans des projets React Native : un guide complet

Importation de fichiers SVG dans des projets React Native : un guide complet

王林
Libérer: 2024-07-24 14:12:53
original
810 Les gens l'ont consulté

Importing SVG Files in React Native Projects: A Comprehensive Guide

Utiliser des fichiers SVG dans vos projets React Native peut être aussi simple que de les utiliser dans des applications Web. La bibliothèque React-native-svg-transformer rend cela possible en transformant vos images SVG importées en composants React. Ce guide vous guidera à travers l'installation, la configuration et l'utilisation de React-native-svg-transformer dans vos projets React Native.

Avantages

  • Cohérence : Utilisez les mêmes fichiers SVG pour les projets React Native et Web.
  • Flexibilité : Importez et utilisez facilement des fichiers SVG en tant que composants React.

Installation et configuration étape par étape

Étape 1 : Installer la bibliothèque React-Native-svg

Tout d’abord, assurez-vous que la bibliothèque React-Native-svg est installée. Cette bibliothèque fournit les composants nécessaires pour restituer les images SVG dans React Native.

Pour installer, exécutez :

npm install react-native-svg
Copier après la connexion

ou

yarn add react-native-svg
Copier après la connexion

Pour des instructions d'installation détaillées, reportez-vous à la page GitHub de React-native-svg.

Étape 2 : Installer la bibliothèque React-Native-svg-transformer

Ensuite, installez la bibliothèque React-native-svg-transformer, qui transformera vos fichiers SVG en composants React.

Pour installer, exécutez :

npm install --save-dev react-native-svg-transformer
Copier après la connexion

ou

yarn add --dev react-native-svg-transformer
Copier après la connexion

Étape 3 : configurer le packager natif React

En fonction de votre configuration (Expo ou React Native CLI), la configuration sera différente. Vous trouverez ci-dessous les configurations pour différents environnements :

Pour Expo SDK v41.0.0 ou version ultérieure

Créez ou mettez à jour votre fichier metro.config.js avec la configuration suivante :

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

module.exports = (() => {
  const config = getDefaultConfig(__dirname);

  const { transformer, resolver } = config;

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

  return config;
})();
Copier après la connexion
Pour React Native v0.72.1 ou version ultérieure

Créez ou mettez à jour votre fichier metro.config.js avec la configuration suivante :

const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config");

const defaultConfig = getDefaultConfig(__dirname);
const { assetExts, sourceExts } = defaultConfig.resolver;

/**
 * Metro configuration
 * https://reactnative.dev/docs/metro
 *
 * @type {import('metro-config').MetroConfig}
 */
const config = {
  transformer: {
    babelTransformerPath: require.resolve(
      "react-native-svg-transformer/react-native"
    )
  },
  resolver: {
    assetExts: assetExts.filter((ext) => ext !== "svg"),
    sourceExts: [...sourceExts, "svg"]
  }
};

module.exports = mergeConfig(defaultConfig, config);
Copier après la connexion
Pour React Native v0.59 ou version ultérieure

Créez ou mettez à jour votre fichier metro.config.js avec la configuration suivante :

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

module.exports = (async () => {
  const {
    resolver: { sourceExts, assetExts }
  } = await getDefaultConfig();
  return {
    transformer: {
      babelTransformerPath: require.resolve(
        "react-native-svg-transformer/react-native"
      )
    },
    resolver: {
      assetExts: assetExts.filter((ext) => ext !== "svg"),
      sourceExts: [...sourceExts, "svg"]
    }
  };
})();
Copier après la connexion
Projets React Native à l'aide de modules Expo

Pour les projets utilisant des modules Expo sans expo-cli, vous devrez peut-être ajuster le chemin du transformateur pour utiliser correctement le transformateur de React Native :

-require.resolve("react-native-svg-transformer")
+require.resolve("react-native-svg-transformer/react-native")
Copier après la connexion

Vous pouvez également forcer le transformateur d'Expo à toujours être utilisé :

-require.resolve("react-native-svg-transformer")
+require.resolve("react-native-svg-transformer/expo")
Copier après la connexion

Utiliser TypeScript

Si votre projet utilise TypeScript, vous devez déclarer le module pour les fichiers SVG. Ajoutez ce qui suit à votre fichier déclarations.d.ts (créez-le s'il n'existe pas) :

declare module "*.svg" {
  import React from "react";
  import { SvgProps } from "react-native-svg";
  const content: React.FC<SvgProps>;
  export default content;
}
Copier après la connexion

Usage

Après l'installation et la configuration, vous pouvez importer et utiliser des fichiers SVG dans vos composants React comme n'importe quel autre composant.

Exemple :

  1. Importez le fichier SVG :

    import Logo from "./logo.svg";
    
    Copier après la connexion
  2. Utilisez le SVG comme composant :

    <Logo width={120} height={40} />
    
    Copier après la connexion

Ressources supplémentaires

  • Projets de démonstration :
    • exemple-react-native-svg
    • react-native-svg-expo-exemple

En suivant ce guide, vous devriez être en mesure d'intégrer de manière transparente des fichiers SVG dans vos projets React Native, améliorant ainsi votre flux de travail de développement et maintenant la cohérence sur les différentes plates-formes.

Suivez-moi pour plus d'articles !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal