UTILS.
100 % im Browser
🎨

SVG zu JSX-Komponente

Verwandeln Sie rohes SVG-Markup in eine einsatzbereite React-Komponente mit camelCase-Attributen, Prop-Spreading und optionalem currentColor und forwardRef.

— Ausgabe erscheint hier —

Über dieses Tool

Das Tool SVG zu JSX-Komponente konvertiert rohes SVG-Markup in eine saubere React-Komponente, so wie es SVGR tut, aber vollständig in Ihrem Browser ohne Hochladen. Fügen Sie ein aus einem Design-Tool exportiertes Icon ein und erhalten Sie eine Komponente, die Sie importieren und stylen können. Es parst das SVG mit DOMParser und meldet einen klaren Fehler, wenn das Markup fehlerhaft ist.

Jedes SVG-Attribut mit Bindestrich oder Namespace wird in seinen React-Namen in camelCase gesetzt — stroke-width zu strokeWidth, fill-rule zu fillRule, clip-path zu clipPath, stop-color zu stopColor, xlink:href zu xlinkHref, xmlns:xlink zu xmlnsXlink — während data-*- und aria-*-Attribute unverändert bleiben. Inline-Style-Strings werden zu Style-Objekten, leere Elemente wie path und circle werden selbstgeschlossen, und Props werden auf die Wurzel <svg {...props}> gespreadet, sodass die Komponente konfigurierbar bleibt. Optionale Umschalter lassen Sie fest kodierte fill- und stroke-Werte durch currentColor ersetzen (sodass das Icon die Textfarbe erbt), width und height entfernen, damit es sich an seinen Container skaliert, und die Komponente mit forwardRef umhüllen, um den zugrunde liegenden <svg>-Knoten offenzulegen.

Wählen Sie JavaScript- oder TypeScript-Ausgabe: Die TypeScript-Variante typisiert Props als React.SVGProps<SVGSVGElement> und verwendet mit aktiviertem forwardRef forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>. Die Komponente wird als exportierte Arrow-Function ausgegeben (export const Icon = (props) => (...)), mit Ihrem gewählten Namen und Einrückung, bereit zum Einfügen in ein Icon-Modul.

Häufig gestellte Fragen

Wie werden SVG-Attribute konvertiert?
Attribute mit Bindestrich und Doppelpunkt-Namespace werden in ihre React-Äquivalente in camelCase gesetzt: stroke-width zu strokeWidth, fill-rule zu fillRule, xlink:href zu xlinkHref. data-*- und aria-*-Attribute werden beibehalten. Inline-Styles werden zu Style-Objekten.
Was macht die currentColor-Option?
Sie ersetzt fest kodierte fill- und stroke-Farbwerte (alles außer none) durch "currentColor", sodass das SVG die umgebende Textfarbe erbt und mit einfachem CSS color am Elternelement neu eingefärbt werden kann.
Warum Props auf das svg spreaden?
Das Spreaden von {...props} auf die Wurzel <svg> lässt Aufrufer className, width, onClick, aria-Labels und alle anderen SVG-Props an die Komponente übergeben. Mit aktiviertem forwardRef wird außerdem eine ref an das zugrunde liegende Element weitergeleitet.
Was ist der Unterschied zwischen JS- und TS-Ausgabe?
Die TypeScript-Ausgabe typisiert die Props als React.SVGProps<SVGSVGElement> und verwendet mit forwardRef forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>. Die JavaScript-Ausgabe lässt die Typannotationen weg, ist aber ansonsten identisch.

Weitere Tools