2016-08-08 4 views
20

Ich möchte Svg-Dateien zeigen (ich habe Haufen Svg Bilder), aber die Sache, die ich nicht den Weg finden konnte zu zeigen. Ich habe versucht, Image und Verwenden Sie Komponenten von react-native-svg, aber sie funktionieren nicht damit. Und ich habe versucht, dies mit nativer Art und Weise zu tun, aber es ist wirklich harte Arbeit, nur Svg-Bild zu zeigen.Wie kann ich SVG-Datei auf React Native 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 nativer reagiert nicht svg grundsätzlich unterstützt, aber ich denke, dass jemand dieses Problem mit kniffliger Art und Weise beheben (mit/ohne reagieren-native-svg)

+0

Sie können keinen Gebrauch verwenden, um eine gesamte Datei angezeigt werden, können Sie für das bräuchten. –

+0

Ja, ich habe es auch @RobertLongson versucht, aber es funktioniert auch nicht. –

+0

Sie können es als CSS backgroundImage hinzufügen, haben Sie es versucht? – danielarend

Antwort

2

I hatte das gleiche Problem. Ich verwende diese Lösung, die ich gefunden habe: React Native display SVG from a file

Es ist nicht perfekt, und ich bin heute wieder auf Besuch, weil es auf Android viel schlechter läuft.

+0

Eigentlich ist es kreative Antwort, aber es hilft mir nicht passt :) Weil ich Icon-Liste (10 oder mehr SVG-Icons) verwenden wird, wenn ich dies verwende, kann es wirklich schlecht für die Leistung sein, denke ich. Was denken Sie? –

+0

Ich habe 10-15 svgs auf einer Seite gerendert. Niemand hat sich über iOS beschwert, alle haben sich über Android beschwert. Auf iOS gibt es eine Verzögerung von 0,1-0,3 Sekunden (ein Sekundenbruchteil von Weiß, bevor es lädt). Bei Android kann es 1 Sekunde dauern und manchmal werden sie nie geladen. Am Ende habe ich meine SVGs eingecheckt und dann ein Skript geschrieben, das sie mit [svg2png] (https://www.npmjs.com/package/svg2png) in PNGs von genau der richtigen Größe konvertiert. Dann benutzte '' mit diesen PNGs. Angesichts des aktuellen Status von SVG in Reaktion, gibt es keine ETA für SVGs, also ist dies die beste Wette, wenn Sie die Arbeit nicht tolerieren können. –

5

Nach vielen Versuchen und Bibliotheken entschied ich mich, eine neue Schriftart zu erstellen (mit Glyphs oder tutorial) und füge meine SVG-Dateien dazu, dann verwenden Sie "Text" -Komponente mit meiner benutzerdefinierten Schriftart.

Hoffen Sie, dass dies jedem helfen, der ein Problem mit SVG in reaktionseigener Umgebung hat.

+0

Ich denke, Sie haben Recht, eine Schriftfamilie ist wahrscheinlich der einfachste Weg, um einfache SVGs zu reagieren native –

+0

Nizza Tutorial zu diesem Thema: https://blog.bam.tech/developper-news/add-custom-icons-to - Ihre Reaktion - native Anwendung. Benötigt die [Vektor-Icons] (https: // github.com/oblador/react-native-vector-icons) Knotenpaket. – Rafa

+0

@Rafa Ja, nettes Tutorial, danke –

0

Es gibt eine sehr gute Lösung https://github.com/seekshiva/react-native-remote-svg ich es nur versuchen, hier und funktioniert schön, sehr einfach zu benutzen:

einfach die lib installieren: Garn hinzufügen reagieren-native-remote-svg, Import auf Ihren Bildschirm :

import Image from 'react-native-remote-svg' 

und verwenden

<View> 
    <Image source={require('./money.svg')} /> 
</View> 
+0

Es gibt einen Fehler "kann kein Kind hinzufügen, das keinen css Knoten zu einem Knoten ohne eine Maßfunktion hat". –

+0

Vermutlich ist es in Folge davon passiert, wie Sie es in Ihre Komponenten eingepackt haben. Schauen Sie so, wie ich es gemacht habe {images.map (({Name, Bild, URL, Schlüssel}) = > ( navigate (url)}> ))}

+0

Und hier die Bilder Array const Bilder = [ { Schlüssel: 1, Name: "Imóveis", Bild: require ("../ icones/estates.svg"), url: "Imoveis" } ,] Ich importierte Zeilen und Spalten aus: import {column, Column, Row} von 'react-native-flexbox-grid'; –