Typisierte React-Komponenten aus SVG erstellen

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

Wenn SVG direkt in Code eingefügt wird, entstehen oft inkonsistente Props und hartkodierte Werte. Diese Anleitung zeigt einen sauberen React- und TypeScript-Icon-Workflow.

1) SVG-Eingabe normalisieren

  • Entfernen Sie vor der Konvertierung unnötige Gruppen, Metadaten und Inline-Stile.
  • Behalten Sie die viewBox bei, damit die Skalierung von Komponenten vorhersehbar bleibt.
  • Benennen Sie IDs und Masken um, um Kollisionen zu vermeiden, wenn mehrere Icons auf einer Seite gerendert werden.

2) Eine typsichere Komponente erzeugen

  • Nutzen Sie TypeScript-Props, die SVG-Props erweitern, für volle IntelliSense-Unterstützung.
  • Setzen Sie Standardwerte für Breite/Höhe und erlauben Sie Überschreibungen aus der Nutzung im Parent.
  • Ersetzen Sie feste Füllungen durch currentColor, wenn Icons die Textfarbe erben sollen.

3) In ein Design-System integrieren

  • Speichern Sie Icons in einem vorhersehbaren Ordner und exportieren Sie sie über eine einzige Barrel-Datei.
  • Wenden Sie Lint-Regeln oder Tests an, um ungültige SVG-Attribute in CI zu blockieren.
  • Dokumentieren Sie Beispiele für semantische Größen-Tokens und aria-Labels.

SVG zu React TypeScript – FAQ

Sollten Icon-Komponenten eine feste Farbe oder currentColor verwenden?
Für Design-System-Icons ist currentColor meist die beste Wahl, weil die Farbe über den Text oder die Theme-Tokens des Parents gesteuert werden kann.
Wie typisiere ich Icon-Props?
Verwenden Sie React.SVGProps<SVGSVGElement> als Basis und fügen Sie optionale eigene Props nur hinzu, wenn nötig.
Kann ich Barrierefreiheits-Labels flexibel halten?
Ja. Stellen Sie title/aria-label-Props bereit und setzen Sie für dekorative Icons standardmäßig aria-hidden.
Sollte ich vor der React-Konvertierung optimieren?
Ja. Durch die Optimierung zuerst wird Rauschen reduziert und vermieden, dass unnötige Attribute in TSX-Dateien übernommen werden.