UTILS.
100% w przeglądarce
🎨

SVG na komponent JSX

Zamień surowe znaczniki SVG w gotowy do użycia komponent React z atrybutami camelCase, rozproszeniem propsów oraz opcjonalnym currentColor i forwardRef.

— wynik pojawi się tutaj —

O tym narzędziu

Narzędzie SVG na komponent JSX konwertuje surowe znaczniki SVG w czysty komponent React, tak jak robi to SVGR, ale w całości w Twojej przeglądarce, bez przesyłania czegokolwiek. Wklej ikonę wyeksportowaną z narzędzia projektowego i otrzymaj komponent, który możesz zaimportować i stylizować. Parsuje SVG za pomocą DOMParser i zgłasza jasny błąd, jeśli znaczniki są nieprawidłowe.

Każdy atrybut SVG z myślnikiem lub przestrzenią nazw jest zamieniany na camelCase do swojej nazwy React — stroke-width na strokeWidth, fill-rule na fillRule, clip-path na clipPath, stop-color na stopColor, xlink:href na xlinkHref, xmlns:xlink na xmlnsXlink — podczas gdy atrybuty data-* i aria-* pozostają bez zmian. Łańcuchy style inline stają się obiektami style, puste elementy, takie jak path i circle, są samozamykane, a propsy są rozpraszane na korzeń <svg {...props}>, więc komponent pozostaje konfigurowalny. Opcjonalne przełączniki pozwalają zastąpić zakodowane na stałe wartości fill i stroke wartością currentColor (aby ikona dziedziczyła kolor tekstu), usunąć width i height, aby skalowała się do swojego kontenera, oraz opakować komponent w forwardRef, aby udostępnić bazowy węzeł <svg>.

Wybierz wyjście JavaScript lub TypeScript: wariant TypeScript typuje propsy jako React.SVGProps<SVGSVGElement>, a przy włączonym forwardRef używa forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>. Komponent jest emitowany jako eksportowana funkcja strzałkowa (export const Icon = (props) => (...)), z wybraną przez Ciebie nazwą i wcięciem, gotowa do wklejenia do modułu ikon.

Najczęściej zadawane pytania

Jak konwertowane są atrybuty SVG?
Atrybuty z myślnikiem i przestrzenią nazw z dwukropkiem są zamieniane na camelCase do swoich odpowiedników React: stroke-width na strokeWidth, fill-rule na fillRule, xlink:href na xlinkHref. Atrybuty data-* i aria-* są zachowywane. Style inline stają się obiektami style.
Co robi opcja currentColor?
Zastępuje zakodowane na stałe wartości kolorów fill i stroke (wszystko poza none) wartością "currentColor", więc SVG dziedziczy otaczający kolor tekstu i można go przekolorować zwykłym CSS color na rodzicu.
Dlaczego rozpraszać propsy na svg?
Rozproszenie {...props} na korzeń <svg> pozwala wywołującym przekazać className, width, onClick, etykiety aria i dowolne inne propsy SVG do komponentu. Przy włączonym forwardRef ref jest również przekazywany do bazowego elementu.
Jaka jest różnica między wyjściem JS a TS?
Wyjście TypeScript typuje propsy jako React.SVGProps<SVGSVGElement>, a z forwardRef używa forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>. Wyjście JavaScript pomija adnotacje typów, ale poza tym jest identyczne.

Więcej narzędzi