Erstellen Sie typisierte React-Komponenten aus SVG

Verwandeln Sie rohes SVG-Markup in wiederverwendbare TSX-Icons und halten Sie Farbe, Größe und Accessibility-Verhalten konsistent.

Wenn SVG direkt in den Code kopiert wird, entstehen oft uneinheitliche Props und hart codierte Werte. Dieser Guide zeigt Ihnen einen klaren Workflow für React- und TypeScript-Icons.

1) SVG-Eingabe normalisieren

  • Bereinigen Sie unnötige Gruppen, Metadaten und Inline-Styles vor der Konvertierung.
  • Behalten Sie die viewBox bei, damit die Skalierung der Komponente vorhersagbar bleibt.
  • Benennen Sie IDs und masks um, damit es keine Kollisionen gibt, wenn mehrere Icons gleichzeitig gerendert werden.

2) Eine typsichere Komponente erzeugen

  • Verwenden Sie TypeScript-Props, die SVG-Props erweitern, damit IntelliSense vollständig verfügbar bleibt.
  • Definieren Sie Standardwerte für width und height und erlauben Sie Überschreibungen aus der aufrufenden Komponente.
  • Ersetzen Sie feste fills durch currentColor, wenn Icons die Textfarbe des übergeordneten Elements übernehmen sollen.

3) In ein Design-System integrieren

  • Legen Sie Icons in einer klaren Ordnerstruktur ab und exportieren Sie sie über eine zentrale Barrel-Datei.
  • Setzen Sie Lint-Regeln oder Tests ein, um unzulässige SVG-Attribute in der CI zu blockieren.
  • Dokumentieren Sie Beispiele für semantische Größentokens und aria-Labels.

FAQ zu SVG und React TypeScript

Sollen Icon-Komponenten feste Farben oder currentColor verwenden?
Für Icons im Design-System ist currentColor meistens die bessere Wahl, weil die Farbe dann über Elternelemente oder Theme-Tokens gesteuert werden kann.
Wie typisiere ich Icon-Props am besten?
Nutzen Sie React.SVGProps<SVGSVGElement> als Basis und fügen Sie optionale Custom-Props nur dann hinzu, wenn sie wirklich gebraucht werden.
Kann ich Accessibility-Labels flexibel halten?
Ja. Stellen Sie Props wie title oder aria-label bereit und setzen Sie für rein dekorative Icons standardmäßig aria-hidden.
Sollte ich vor der React-Konvertierung optimieren?
Ja. Eine frühe Optimierung reduziert Rauschen und verhindert, dass unnötige Attribute in Ihre TSX-Dateien gelangen.