Heim > Web-Frontend > js-Tutorial > SVG-Dateien in React Native-Projekte importieren: Eine umfassende Anleitung

SVG-Dateien in React Native-Projekte importieren: Eine umfassende Anleitung

王林
Freigeben: 2024-07-24 14:12:53
Original
845 Leute haben es durchsucht

Importing SVG Files in React Native Projects: A Comprehensive Guide

Die Verwendung von SVG-Dateien in Ihren React Native-Projekten kann genauso einfach sein wie die Verwendung in Webanwendungen. Die React-Native-Svg-Transformer-Bibliothek macht dies möglich, indem sie Ihre importierten SVG-Bilder in React-Komponenten umwandelt. Dieser Leitfaden führt Sie durch die Installation, Konfiguration und Verwendung von React-Native-SVG-Transformer in Ihren React Native-Projekten.

Vorteile

  • Konsistenz: Verwenden Sie dieselben SVG-Dateien sowohl für React Native als auch für Webprojekte.
  • Flexibilität: SVG-Dateien einfach importieren und als React-Komponenten verwenden.

Schritt-für-Schritt-Installation und Konfiguration

Schritt 1: Installieren Sie die React-Native-SVG-Bibliothek

Stellen Sie zunächst sicher, dass Sie die React-Native-SVG-Bibliothek installiert haben. Diese Bibliothek stellt die notwendigen Komponenten zum Rendern von SVG-Bildern in React Native bereit.

Zur Installation führen Sie Folgendes aus:

npm install react-native-svg
Nach dem Login kopieren

oder

yarn add react-native-svg
Nach dem Login kopieren

Detaillierte Installationsanweisungen finden Sie auf der GitHub-Seite „react-native-svg“.

Schritt 2: Installieren Sie die React-Native-SVG-Transformer-Bibliothek

Als nächstes installieren Sie die React-Native-Svg-Transformer-Bibliothek, die Ihre SVG-Dateien in React-Komponenten umwandelt.

Zur Installation führen Sie Folgendes aus:

npm install --save-dev react-native-svg-transformer
Nach dem Login kopieren

oder

yarn add --dev react-native-svg-transformer
Nach dem Login kopieren

Schritt 3: Konfigurieren Sie den React Native Packager

Abhängig von Ihrem Setup (Expo oder React Native CLI) unterscheidet sich die Konfiguration. Nachfolgend finden Sie die Konfigurationen für verschiedene Umgebungen:

Für Expo SDK v41.0.0 oder neuer

Erstellen oder aktualisieren Sie Ihre Datei metro.config.js mit der folgenden Konfiguration:

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;
})();
Nach dem Login kopieren
Für React Native v0.72.1 oder neuer

Erstellen oder aktualisieren Sie Ihre Datei metro.config.js mit der folgenden Konfiguration:

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);
Nach dem Login kopieren
Für React Native v0.59 oder neuer

Erstellen oder aktualisieren Sie Ihre Datei metro.config.js mit der folgenden Konfiguration:

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"]
    }
  };
})();
Nach dem Login kopieren
Reagieren Sie auf native Projekte mithilfe von Expo-Modulen

Bei Projekten, die Expo-Module ohne expo-cli verwenden, müssen Sie möglicherweise den Transformatorpfad anpassen, um den Transformator von React Native korrekt zu verwenden:

-require.resolve("react-native-svg-transformer")
+require.resolve("react-native-svg-transformer/react-native")
Nach dem Login kopieren

Alternativ können Sie erzwingen, dass der Transformator von Expo immer verwendet wird:

-require.resolve("react-native-svg-transformer")
+require.resolve("react-native-svg-transformer/expo")
Nach dem Login kopieren

Verwendung von TypeScript

Wenn Ihr Projekt TypeScript verwendet, müssen Sie das Modul für SVG-Dateien deklarieren. Fügen Sie Ihrer Datei „declarations.d.ts“ Folgendes hinzu (erstellen Sie sie, falls sie nicht vorhanden ist):

declare module "*.svg" {
  import React from "react";
  import { SvgProps } from "react-native-svg";
  const content: React.FC<SvgProps>;
  export default content;
}
Nach dem Login kopieren

Verwendung

Nach der Installation und Konfiguration können Sie SVG-Dateien wie jede andere Komponente in Ihre React-Komponenten importieren und verwenden.

Beispiel:

  1. SVG-Datei importieren:

    import Logo from "./logo.svg";
    
    Nach dem Login kopieren
  2. SVG als Komponente verwenden:

    <Logo width={120} height={40} />
    
    Nach dem Login kopieren

Zusätzliche Ressourcen

  • Demo-Projekte:
    • react-native-svg-example
    • react-native-svg-expo-example

Wenn Sie dieser Anleitung folgen, sollten Sie in der Lage sein, SVG-Dateien nahtlos in Ihre React Native-Projekte zu integrieren, Ihren Entwicklungsworkflow zu verbessern und die Konsistenz über verschiedene Plattformen hinweg aufrechtzuerhalten.

Folgen Sie mir für weitere Artikel!

Das obige ist der detaillierte Inhalt vonSVG-Dateien in React Native-Projekte importieren: Eine umfassende Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage