1. JSX e Atributos SVG
O principal motivo para converter SVG antes de usar no React e que JSX nao aceita atributos com hifens — uma convencao do HTML/SVG que colide com a sintaxe JavaScript. Exemplos: stroke-width deve se tornar strokeWidth, fill-rule deve se tornar fillRule. Alem disso, class vira className. Usar SVG diretamente sem essa conversao gera erros ou warnings no console.
2. currentColor e Theming
Substituir cores fixas (como #3b82f6 ou black) por currentColor permite que o icone herde a cor do texto do elemento pai via CSS. Isso e essencial para icones que precisam mudar de cor em diferentes contextos (botoes, links, dark mode) sem precisar de props adicionais.
"Usar currentColor e a forma mais elegante de tornar icones SVG customizaveis em um design system React — sem props de cor ou temas complexos."
3. Props Spreading
Adicionar {...props} ao elemento SVG permite passar qualquer atributo SVG diretamente ao componente: width, height, className, aria-label, etc. Isso torna o componente muito mais flexivel sem adicionar props manualmente.
4. SVG com TypeScript
Com TypeScript, o tipo correto para props de um componente SVG e React.SVGProps<SVGSVGElement>. Isso garante type-safety completo: autocomplete de atributos SVG, verificacao de tipos em tempo de compilacao e melhor experiencia no editor.
5. Alternativas: SVGR e Vite
Para projetos com muitos icones, use o SVGR com Vite ou webpack. Com a configuracao correta, voce pode importar SVGs diretamente como componentes: import Icon from './icon.svg'. Mas para icones isolados ou uso pontual, nosso conversor online e mais rapido.
6. Perguntas Frequentes
Devo usar SVG inline ou como img?
SVG inline (componente React) permite estilizacao via CSS e currentColor. Como <img>, e mais simples mas nao e estilizavel. Para icones de UI, inline e o padrao. Para imagens decorativas complexas, <img> pode ser preferivel.
Por que usar React.memo em icones?
Icones raramente mudam de render para render. React.memo evita re-renders desnecessarios quando as props nao mudam, otimizando componentes que usam muitos icones em listas ou grids.
O SVG colado e armazenado?
Nao. Toda a conversao acontece localmente no seu navegador via JavaScript. Nenhum dado e enviado a servidores.
O conversor funciona com SVGs complexos?
Sim, para a maioria dos SVGs. SVGs com filtros feColorMatrix ou atributos muito especificos podem precisar de ajuste manual, mas a conversao de atributos camelCase e currentColor funciona em praticamente todos os casos.