Saltar al contenido
SvgJsx
Idioma: Español

Convertir SVG en un componente de React

Convierte cualquier icono o ilustración SVG en un componente funcional de React con atributos listos para JSX, propagación de props y props opcionales de tamaño y color.

Ajustes rápidos:
Suelta archivos .svg aquí oLos archivos se leen localmente con FileReader y nunca se suben.
Opciones
Exportación:
const HeartIcon = (props) => (
  <svg width="24" height="24" viewBox="0 0 24 24" className="icon icon-heart" {...props}>
    <g id="Layer_1" fill="none" stroke="#e11d48" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
      <path d="M19.0001 14.0002c1.4900-1.4600 3.0000-3.2100 3.0000-5.5000A5.5000 5.5000 0 0 0 16.5000 3c-1.7600 0-3.0000.5000-4.5000 2-1.5000-1.5000-2.7400-2-4.5000-2A5.5000 5.5000 0 0 0 2 8.5000c0 2.3000 1.5000 4.0500 3 5.5000l7 7Z" style={{ fillOpacity: "0.15", fill: "#e11d48" }} />
    </g>
  </svg>
);

export default HeartIcon;

Vista previa

Vista previa del SVG convertido
SVG original
706B
SVG optimizado
538B(-24 %)
Componente
566B

¿Por qué no pegar el SVG directamente en React?

Pegar SVG sin procesar en un archivo .jsx suele producir una avalancha de advertencias como «Invalid DOM property stroke-width» o «Invalid DOM property class», o directamente un error de compilación si el archivo contiene un atributo style o una declaración XML. Renombrar cada atributo a mano es lento y propenso a errores en sets de iconos grandes.

Este convertidor hace el renombrado por ti y envuelve el marcado en un componente que acepta props. Como {...props} se propaga sobre el <svg> raíz, puedes pasar className, aria-label, onClick o un ancho personalizado desde el componente padre sin volver a editar el icono.

Ajustes recomendados para iconos de React

Para un componente de icono reutilizable te recomendamos:

  • Activar currentColor para que el icono herede el color de texto del padre y funcione en modo oscuro.
  • Activar la prop size para controlar ancho y alto con un solo valor, por ejemplo size={20}.
  • Mantener el viewBox y quitar width y height fijos para que el icono escale con CSS.
  • Usar forwardRef solo cuando el padre necesite el elemento <svg>, por ejemplo para tooltips o animaciones.

Componentes en línea frente a archivos de imagen

Los componentes SVG en línea se pueden estilizar con CSS, animar y cambiar de color al pasar el ratón, y nunca generan una petición de red adicional. Para ilustraciones grandes que no cambian, un simple <img src="/file.svg"> puede salir más barato porque el navegador lo almacena en caché por separado. Usa componentes para iconos y gráficos de interfaz, y etiquetas de imagen para ilustraciones pesadas.

Preguntas frecuentes

¿Qué versiones de React son compatibles?

El resultado es un componente de función normal que funciona con React 16.8 y posteriores, incluidos React 18 y 19. forwardRef y memo son opcionales y solo se importan cuando los activas.

¿Tengo que importar React en el archivo generado?

No. Con la transformación moderna de JSX que usan Next.js, Vite y Create React App 4+, React no tiene que estar en el ámbito. El convertidor solo importa lo que el componente utiliza realmente.

¿Cómo cambio el color del icono desde el padre?

Activa la opción currentColor. Los rellenos y trazos se sustituyen por currentColor, de modo que el icono toma el color CSS de su padre, por ejemplo la clase text-red-600 de Tailwind.

¿Puedo pasar onClick o aria-label al icono?

Sí. El componente propaga {...props} sobre el <svg> raíz, así que cualquier atributo SVG o manejador de eventos que pases se reenvía y sobrescribe los valores por defecto.