Convertir SVG a Componente React

Transforma código SVG en componentes React listos para producción con conversión automática de atributos JSX.

Convierte código SVG sin procesar en componentes React limpios al instante. Transforma automáticamente los atributos SVG a sintaxis camelCase de JSX, convierte estilos en línea a notación de objetos, soporta TypeScript con props tipados, envoltura con React.memo, forwardRef y estilos de exportación configurables. Todo el procesamiento se ejecuta localmente en tu navegador para máxima privacidad y velocidad.

Loading...
Tus datos no salen de tu navegador
¿Te ha sido útil está herramienta?
Tutorial

Cómo Usar

1
1

Pegar tu SVG

Copia el código SVG desde tu herramienta de diseño o biblioteca de íconos y pégalo en el área de texto de entrada.

2
2

Configurar Opciones

Establece el nombre del componente, elige TypeScript o JavaScript, y activa memo, forwardRef o estilo de exportación según necesites.

3
3

Convertir y Copiar

Haz clic en Convertir para generar el componente React. Copia el código de salida directamente en los archivos fuente de tu proyecto.

Guide

Guía Completa de SVG en React

Por Qué Convertir SVG a Componentes React

Usar SVG como componentes React te da control total sobre estilos, animaciones e interactividad a través de props. A diferencia de etiquetas de imagen o fondos CSS, los componentes SVG en línea pueden responder a cambios de estado, aceptar colores dinámicos via props y participar en el ciclo de vida del componente React. Este enfoque también permite tree-shaking; los íconos no utilizados se excluyen automáticamente de los bundles de producción por bundlers modernos como Webpack y Vite.

Entendiendo las Diferencias de Atributos JSX

React usa camelCase para atributos DOM en lugar de la convención kebab-case de HTML. SVG tiene muchos atributos con guiones como stroke-width, fill-opacity y clip-rule que deben convertirse en strokeWidth, fillOpacity y clipRule en JSX. El atributo class se convierte en className, y las cadenas de estilo en línea deben convertirse a objetos JavaScript con nombres de propiedad en camelCase y valores de cadena o numéricos.

TypeScript y SVG Props

Usar SVGProps<SVGSVGElement> de las definiciones de tipo de React le da a tu componente seguridad de tipos completa para todos los atributos SVG válidos. Esto significa que los consumidores obtienen autocompletado para propiedades como viewBox, fill, stroke, opacity y todos los atributos de presentación. Combinado con tu propia interfaz de props personalizados, TypeScript detecta errores tipográficos de atributos y valores inválidos en tiempo de compilación en lugar de en tiempo de ejecución.

Optimización de Rendimiento con memo y forwardRef

Envolver componentes de íconos con React.memo previene re-renderizados innecesarios cuando los componentes padres se actualizan pero los props del ícono permanecen sin cambios. Esto es particularmente beneficioso en vistas de lista con muchos íconos. El envoltorio forwardRef permite a los componentes padres acceder al nodo DOM SVG directamente para mediciones, observadores de intersección o animaciones imperativas sin romper la abstracción del componente.

Examples

Ejemplos Resueltos

Ejemplo: Conversión de Ícono Simple

Dado: Un ícono SVG básico de círculo con atributos de trazo.

1

Paso 1: Pegar <svg viewBox="0 0 24 24" fill="none" stroke-width="2"><circle cx="12" cy="12" r="10" /></svg> en la entrada.

2

Paso 2: Establecer el nombre del componente como CircleIcon y habilitar TypeScript.

3

Paso 3: Hacer clic en Convertir a React.

Resultado: Un componente React tipado con strokeWidth convertido a camelCase y SVGProps propagados en el elemento raíz.

Ejemplo: Path Complejo con Estilos

Dado: Un elemento path SVG con estilos en línea y múltiples atributos en kebab-case.

1

Paso 1: Pegar SVG con style="fill:red;stroke-width:2" y atributos como fill-rule y clip-path.

2

Paso 2: Habilitar las opciones memo y forwardRef.

3

Paso 3: Hacer clic en Convertir y observar el objeto de estilo y las conversiones camelCase.

Resultado: Un componente envuelto en memo con forwardRef con style={{ fill: 'red', strokeWidth: 2 }} y atributos en camelCase.

Casos de uso

Casos de Uso

Creación de Biblioteca de Íconos

Convierte una colección de íconos SVG desde herramientas de diseño como Figma o Sketch en componentes React tipados. Cada ícono se convierte en un componente reutilizable con soporte SVGProps, permitiendo estilos consistentes a través de props como className, fill y stroke en toda tu aplicación.

Integración con Sistema de Diseño

Transforma ilustraciones y gráficos SVG en componentes React correctamente tipados para tu sistema de diseño. Usar las opciones forwardRef y memo asegura que estos componentes se integren sin problemas con bibliotecas de animación, disparadores de tooltips y otros patrones que dependen de refs mientras se optimiza el rendimiento de renderizado.

Migración de SVG Legado

Migra elementos SVG en línea de plantillas HTML heredadas a bases de código React modernas. El conversor maneja todas las transformaciones de atributos automáticamente; convirtiendo class a className, kebab-case a camelCase y cadenas de estilo en línea a objetos JavaScript, ahorrando horas de conversión manual tediosa.

Preguntas Frecuentes

?¿Qué atributos SVG se convierten?

Todos los atributos SVG comunes se convierten a sus equivalentes JSX de React. Esto incluye stroke-width a strokeWidth, fill-rule a fillRule, clip-path a clipPath y class a className.

?¿Maneja estilos en línea?

Sí. Las cadenas de estilo en línea como style="fill:red;stroke-width:2" se convierten a objetos de estilo React con propiedades en camelCase y valores correctamente tipados.

?¿Qué hace la opción forwardRef?

Envuelve el componente con React.forwardRef, permitiendo que los componentes padres accedan al elemento DOM SVG subyacente a través de refs para animaciones, mediciones o gestión del foco.

?¿Por qué eliminar xmlns?

El atributo xmlns es necesario para archivos SVG independientes pero innecesario en JSX ya que React maneja el espacio de nombres automáticamente. Eliminarlo mantiene tus componentes más limpios.

?¿Puedo usar la salida en Next.js?

Sí. Los componentes generados funcionan en cualquier framework React incluyendo Next.js, Remix y Gatsby. Para componentes de servidor, asegúrate de agregar la directiva 'use client' si es necesario.

?¿Mis datos están privados al usar esta herramienta?

Absolutamente. Toda la conversión SVG ocurre completamente en tu navegador usando JavaScript. No se envía código a ningún servidor, asegurando que tus diseños y código fuente permanezcan completamente privados.

?¿Es gratuita esta herramienta?

Sí. Este conversor de SVG a React es completamente gratuito sin límites de uso, sin registro requerido y sin restricciones en el código del componente generado.

?¿Se preserva el atributo viewBox?

Sí. El atributo viewBox se preserva exactamente como se proporcionó en el SVG fuente. También propaga props adicionales al elemento SVG raíz para personalización en tiempo de ejecución.

Ayúdanos a mejorar

¿Qué te parece está herramienta?

Cada herramienta de Kitmul se construye a partir de peticiones reales de usuarios. Tu valoración y tus sugerencias nos ayudan a arreglar bugs, añadir funciones que faltan y construir las herramientas que realmente necesitas.

Valora está herramienta

Pulsa una estrella para contarnos lo útil que te ha resultado.

Sugiere una mejora o reporta un bug

¿Te falta alguna función? ¿Has encontrado un falló? ¿Tienes una idea? Cuéntanoslo y lo revisaremos.

Herramientas relacionadas

Lectura Recomendada

Libros Recomendados sobre React, SVG y Desarrollo Frontend

Cómo asociado de Amazon, ganamos con las compras que califican.

Potencia tus Capacidades

Productos Profesionales para Desarrolladores Frontend

Cómo asociado de Amazon, ganamos con las compras que califican.

Boletín

Recibe Consejos de Productividad y Nuevas Herramientas Primero

Únete a creadores y desarrolladores que valoran la privacidad. En cada edición: nuevas herramientas, trucos de productividad y novedades — sin spam.

Acceso prioritario a nuevas herramientas
Cancela en cualquier momento, sin preguntas