Ich möchte SVG-Dateien anzeigen (ich habe eine Reihe von SVG-Bildern), aber das, was ich nicht zeigen konnte. Ich habe versucht, Image and Use- Komponenten von react-native-svg zu verwenden, aber damit funktionieren sie nicht. Und ich habe versucht, das auf native Weise zu tun, aber es ist wirklich harte Arbeit, nur ein SVG-Bild zu zeigen.
Beispielcode:
import Svg, {
Use,
Image,
} from 'react-native-svg';
<View>
<Svg width="80" height="80">
<Image href={require('./svg/1f604.svg')} />
</SvgRn>
</View>
Ich weiß auch, dass der React Native SVG im Grunde nicht unterstützt, aber ich denke, jemand hat dieses Problem auf knifflige Weise behoben (mit / ohne React-Native-SVG).
javascript
svg
react-native
the_bluescreen
quelle
quelle
Antworten:
Ich habe die folgende Lösung verwendet:
.svg
Bild mit https://svg2jsx.herokuapp.com/ in JSX.react-native-svg
Komponente mit https://svgr.now.sh/ in eine Komponente (aktivieren Sie das Kontrollkästchen "Native reagieren").quelle
react-native-svg
Pakets installieren .react-native link react-native-svg
Ich habe hier eine andere Lösung veröffentlicht. Dies ist der beste Ansatz zum Einfügen eines Vektordiagramms (svg) in eine native Reaktionsanwendung . Bei diesem Ansatz wird eine Vektorschrift (aus svg) anstelle einer svg-Datei verwendet. PS: Es funktioniert hervorragend in iOS und Android, und Sie können auch die Farbe und Größe Ihres Vektorsymbols ändern.
Wenn Sie eine SVG-Datei direkt in Ihre App einfügen möchten, können Sie eine Bibliothek eines Drittanbieters ausprobieren: react-native-svg. Mit mehr als 3.000 Sternen in Github ist dies einer der besten Ansätze.
Und hier ist ein Beispiel:
quelle
Nachdem ich viele Möglichkeiten und Bibliotheken ausprobiert hatte, entschied ich mich, eine neue Schriftart (mit Glyphen oder diesem Tutorial ) zu erstellen , meine SVG-Dateien hinzuzufügen und dann die Komponente "Text" mit meiner benutzerdefinierten Schriftart zu verwenden.
Hoffe, dies hilft jedem, der das gleiche Problem mit SVG in React-Native hat.
quelle
Installieren Sie den React-Native-SVG-Transformator
Ich benutze SVG wie folgt und es funktioniert gut
in rendern
quelle
Ich hatte das gleiche Problem. Ich verwende diese Lösung, die ich gefunden habe: Reagiere native Anzeige-SVG aus einer Datei
Es ist nicht perfekt und ich besuche es heute noch einmal, weil es unter Android viel schlechter abschneidet.
quelle
<Image>
mit diesen PNGs verwendet. Angesichts des aktuellen Status von SVG in React Native gibt es keine ETA für SVGs. Dies ist also die beste Wahl, wenn Sie die Umgehung nicht tolerieren können.Verwenden Sie https://github.com/kristerkari/react-native-svg-transformer
In diesem Paket wird erwähnt, dass
.svg
Dateien in React Native v0.57 und niedriger nicht unterstützt werden. Verwenden Sie daher die.svgx
Erweiterung für SVG-Dateien.Verwenden Sie für Web oder React-Native-Web https://www.npmjs.com/package/@svgr/webpack
Um SVG-Dateien
react-native-svg-uri
mit der reaktionsnativen Version 0.57 und niedriger zu rendern , müssen Sie Ihrem Stammprojekt die folgenden Dateien hinzufügenSchritt 1: Datei
transformer.js
zum Stammverzeichnis des Projekts hinzufügenSchritt 2:
rn-cli.config.js
Zum Stammverzeichnis des Projekts hinzufügenDie oben genannten Lösungen funktionieren auch in Produktions-Apps ✅
quelle
Hinweis: Svg funktioniert nicht für Android-Release-Versionen, berücksichtigen Sie es also nicht für Android. Es funktioniert für Android nur im Debug-Modus. Aber es funktioniert gut für ios.
Verwenden Sie https://github.com/vault-development/react-native-svg-uri
Installieren
Verwendung
quelle
Ich habe alle oben genannten Lösungen und andere Lösungen außerhalb des Stapels ausprobiert und keine für mich gearbeitet. Nach langer Recherche habe ich endlich eine Lösung für mein Ausstellungsprojekt gefunden.
Wenn Sie es benötigen, um in expo zu arbeiten, besteht eine Problemumgehung darin, https://react-svgr.com/playground/ zu verwenden und die Verbreitung von Requisiten auf ein G-Element anstelle des SVG-Stamms wie folgt zu verschieben:
quelle
Ich benutze diese beiden Plugins,
Zunächst müssen Sie dieses Plugin installieren. Danach müssen Sie Ihre metro.config.js mit diesem Code ändern.
Für weitere Informationen können Sie diesen Link besuchen
quelle
Alle diese Lösungen sind absolut schrecklich. Konvertieren Sie einfach Ihr SVG in ein PNG und verwenden Sie die Vanille-
<Image/>
Komponente. Die Tatsache, dass React-Native SVG-Bilder in derImage
Komponente immer noch nicht unterstützt, ist ein Witz. Sie sollten niemals eine zusätzliche Bibliothek für eine so einfache Aufgabe installieren. Verwenden Sie https://svgtopng.com/quelle