Convierte tus exportaciones de diseño en componentes de React listos para producción
Los archivos vectoriales SVG son ideales para iconos y logotipos en la web, pero pegarlos directamente en una aplicación React suele provocar una catarata de advertencias en la consola y errores en el empaquetador. Nuestro conversor de SVG a React JSX transforma cualquier archivo SVG en un componente tipado, reutilizable y conforme a las mejores prácticas de React.
Por qué los archivos SVG sin procesar rompen tu compilación de React
El formato JSX de React no es HTML común: es una extensión sintáctica de JavaScript y sigue estrictamente las reglas del lenguaje. Intentar insertar un SVG sin adaptar genera múltiples problemas:
- Kebab-case vs. camelCase: El estándar SVG utiliza guiones en decenas de propiedades (
stroke-width,fill-rule,clip-path). En JavaScript los guiones se interpretan como operadores de resta, por lo que React exige nombres en camelCase comostrokeWidthyfillRule. - El conflicto con
class: En JavaScript,classes una palabra reservada para declarar clases. React exige emplearclassName. - Estilos en línea como objetos: Los atributos
style="fill: blue"habituales en SVG provocan un error fatal en React, que exige una estructura de objeto:style={{ fill: 'blue' }}. - Espacios de nombres innecesarios: Atributos como
xmlnsyxmlns:xlinkson útiles para documentos independientes, pero superfluos dentro de una aplicación web moderna. - Conflictos de IDs en degradados: Figma y Sketch exportan máscaras y degradados con identificadores cortos repetitivos (
id="paint0_linear"). Si un icono se repite en una pantalla, los IDs colisionan y los degradados desaparecen.
El resultado: un componente limpio, moderno y tipado
Nuestra herramienta genera un componente modular e intuitivo:
import React from "react";
const SvgIcon = React.memo(
(props: React.SVGProps<SVGSVGElement>) => (
<svg
xmlns="http://www.w3.org/2000/svg"
width="400"
height="300"
viewBox="0 0 400 300"
{...props}
>
<rect width="100%" height="100%" fill="#f8f8f8" />
<path fill="#31343C" d="M112.215 126.065v34.4h-8.38..." />
</svg>
)
);
export default SvgIcon;La inclusión de {...props} te permite modificar el tamaño, color o clases del icono desde cualquier componente contenedor sin tocar el código SVG subyacente.
Consejo profesional: diseña un sistema de iconos escalable
- Convierte tus iconos con las casillas de TypeScript y React Memo activadas.
- Guarda cada icono en su propio archivo dentro de una carpeta
components/icons/. - Sustituye los colores fijos por
"currentColor". - Expórtalos de forma centralizada desde un archivo
index.ts.
Al usar fill="currentColor", los iconos heredan directamente el color del texto mediante clases de CSS, garantizando compatibilidad automática con el modo oscuro.
¿Para quién es esta herramienta?
- Desarrolladores frontend que desean ahorrarse la tediosa tarea de renombrar manualmente decenas de atributos SVG en cada entrega de diseño.
- Ingenieros de sistemas de diseño que necesitan convertir lotes enteros de activos en una biblioteca tipada y consistente.
- Equipos full-stack que buscan integrar rápidamente gráficos vectoriales sin sorpresas en el empaquetador.
Tu código siempre te pertenece
La privacidad es prioritaria. Todo el proceso de parseo y transformación del árbol DOM tiene lugar en tu navegador local mediante JavaScript. Tu código vectorial jamás se transmite a servidores remotos, garantizando total confidencialidad para tus creaciones y diseños propietarios.