UTILS.
100% in de browser
🎨

SVG naar JSX-component

Zet ruwe SVG-markup om in een direct bruikbare React-component met attributen in camelCase, prop-spreading, en optionele currentColor en forwardRef.

— uitvoer verschijnt hier —

Over deze tool

De tool SVG naar JSX-component zet ruwe SVG-markup om in een schone React-component, zoals SVGR dat doet, maar volledig in je browser zonder dat er iets geüpload wordt. Plak een pictogram dat is geëxporteerd uit een designtool en krijg een component die je kunt importeren en stylen. Het parseert de SVG met DOMParser en meldt een duidelijke fout als de markup misvormd is.

Elk SVG-attribuut met koppelteken of namespace wordt in camelCase gezet naar zijn React-naam — stroke-width naar strokeWidth, fill-rule naar fillRule, clip-path naar clipPath, stop-color naar stopColor, xlink:href naar xlinkHref, xmlns:xlink naar xmlnsXlink — terwijl data-* en aria-*-attributen ongemoeid blijven. Inline style-strings worden style-objecten, lege elementen zoals path en circle worden self-closed, en props worden op de root <svg {...props}> gespread zodat de component configureerbaar blijft. Met optionele schakelaars kun je hard-gecodeerde fill- en stroke-waarden vervangen door currentColor (zodat het pictogram de tekstkleur erft), de width en height strippen zodat het naar zijn container schaalt, en de component met forwardRef wikkelen om de onderliggende <svg>-knoop bloot te leggen.

Kies JavaScript- of TypeScript-uitvoer: de TypeScript-variant typeert props als React.SVGProps<SVGSVGElement> en, met forwardRef ingeschakeld, gebruikt forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>. De component wordt geproduceerd als een geëxporteerde arrow-functie (export const Icon = (props) => (...)), met de naam en inspringing van je keuze, klaar om in een pictogrammodule te plakken.

Veelgestelde vragen

Hoe worden SVG-attributen omgezet?
Attributen met koppelteken en dubbele-punt-namespace worden in camelCase gezet naar hun React-equivalenten: stroke-width naar strokeWidth, fill-rule naar fillRule, xlink:href naar xlinkHref. data-* en aria-*-attributen worden behouden. Inline styles worden style-objecten.
Wat doet de currentColor-optie?
Het vervangt hard-gecodeerde fill- en stroke-kleurwaarden (alles behalve none) door "currentColor", zodat de SVG de omringende tekstkleur erft en kan worden herkleurd met gewone CSS color op de ouder.
Waarom props op de svg spreaden?
Het spreaden van {...props} op de root <svg> laat aanroepers className, width, onClick, aria-labels en alle andere SVG-props aan de component doorgeven. Met forwardRef ingeschakeld wordt ook een ref naar het onderliggende element doorgestuurd.
Wat is het verschil tussen JS- en TS-uitvoer?
TypeScript-uitvoer typeert de props als React.SVGProps<SVGSVGElement>, en met forwardRef gebruikt het forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>. JavaScript-uitvoer laat de type-annotaties weg maar is verder identiek.

Meer tools