UTILS.
100% nel browser
🎨

Da SVG a componente JSX

Trasforma il markup SVG grezzo in un componente React pronto all'uso con attributi in camelCase, spreading delle prop e opzioni currentColor e forwardRef.

— l'output appare qui —

Informazioni su questo strumento

Lo strumento Da SVG a componente JSX converte il markup SVG grezzo in un componente React pulito, come fa SVGR, ma interamente nel tuo browser senza nulla caricato. Incolla un'icona esportata da uno strumento di design e ottieni un componente che puoi importare e stilizzare. Analizza l'SVG con DOMParser e segnala un errore chiaro se il markup è malformato.

Ogni attributo SVG con trattino o namespace viene reso in camelCase al suo nome React — stroke-width in strokeWidth, fill-rule in fillRule, clip-path in clipPath, stop-color in stopColor, xlink:href in xlinkHref, xmlns:xlink in xmlnsXlink — mentre gli attributi data-* e aria-* vengono lasciati così come sono. Le stringhe di stile inline diventano oggetti style, gli elementi vuoti come path e circle vengono autochiusi, e le prop vengono spread sulla radice <svg {...props}> così il componente resta configurabile. Interruttori opzionali permettono di sostituire i valori fill e stroke fissi con currentColor (così l'icona eredita il colore del testo), rimuovere width e height così scala al suo contenitore, e racchiudere il componente con forwardRef per esporre il nodo <svg> sottostante.

Scegli output JavaScript o TypeScript: la variante TypeScript tipizza le prop come React.SVGProps<SVGSVGElement> e, con forwardRef attivo, usa forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>. Il componente viene emesso come arrow function esportata (export const Icon = (props) => (...)), con il nome e l'indentazione che scegli, pronto da incollare in un modulo di icone.

Domande frequenti

Come vengono convertiti gli attributi SVG?
Gli attributi con trattino e con namespace a due punti vengono resi in camelCase ai loro equivalenti React: stroke-width in strokeWidth, fill-rule in fillRule, xlink:href in xlinkHref. Gli attributi data-* e aria-* vengono preservati. Gli stili inline diventano oggetti style.
Cosa fa l'opzione currentColor?
Sostituisce i valori di colore fill e stroke fissi (qualsiasi cosa diversa da none) con "currentColor", così l'SVG eredita il colore del testo circostante e può essere ricolorato con un semplice color CSS sul genitore.
Perché fare lo spread delle prop sull'svg?
Fare lo spread di {...props} sulla radice <svg> permette ai chiamanti di passare className, width, onClick, etichette aria e qualsiasi altra prop SVG al componente. Con forwardRef attivo, viene inoltrato anche un ref all'elemento sottostante.
Qual è la differenza tra output JS e TS?
L'output TypeScript tipizza le prop come React.SVGProps<SVGSVGElement>, e con forwardRef usa forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>. L'output JavaScript omette le annotazioni di tipo ma per il resto è identico.

Altri strumenti