SVG a JSX en línea — Generador de componente React

Convierte SVG en un componente React con className y atributos camelCase. Export TypeScript opcional.

Cargando…
SVG a JSX — guía de componente React
Convierte snippets SVG en componentes de función React sin un compilador pesado. Gestiona class → className y atributos SVG habituales.

Notas para desarrolladores

Los bloques <style> incrustados y las sprite sheets no están soportados en v1. xlink:href y xmlns se convierten a nombres amigables para JSX. Revisa la salida antes de meterla en un design system. Combínalo con validate-svg para detectar viewBox o title faltantes.

Opciones

Nombre del componente
Define el identificador de la función React en el JSX generado (p. ej. SvgIcon).
Exportación predeterminada
Activado: emite export default function …; desactivado: una exportación con nombre.
TypeScript
Añade una firma de props tipada (atributos SVGSVGElement) para un drop-in TSX.

Cuándo elegir esta herramienta

Meter iconos de marketing en design systems React. Convertir SVG de handoff de diseño en componentes TSX. Prototipar nombres de componente antes de añadirlos a un repo. Entender las diferencias de atributos JSX respecto al SVG crudo.

Ejemplos prácticos

Badge con atributos poco amigables para JSX

Entrada de ejemplo

<svg xmlns="http://www.w3.org/2000/svg" width="240" height="72" viewBox="0 0 240 72" class="promo-badge" role="img" aria-labelledby="badge-title badge-desc"> <title id="badge-title">Fast delivery badge</title> <desc id="badge-desc">Rounded badge with lightning icon and gradient background.</desc> <defs> <linearGradient id="badgeGradient" x1="0%" y1="0%" x2="100%" y2="100%"> <stop offset="0%" stop-color="#f97316"/> <stop offset="100%" stop-color="#fb923c"/> </linearGradient> <clipPath id="badgeClip"> <rect x="0" y="0" width="240" height="72" rx="18" ry="18"/> </clipPath> </defs> <g clip-path="url(#badgeClip)"> <rect width="240" height="72" fill="url(#badgeGradient)"/> <g transform="translate(20 16)"> <circle cx="20" cy="20" r="20" fill="#0f172a" fill-opacity="0.14"/> <path fill="#fff" d="M24 4 11 22h9l-4 14 13-18h-9z"/> </g> <g font-family="Inter, Arial, sans-serif" fill="#fff"> <text x="76" y="31" font-size="18" font-weight="700">FastMinify</text> <text x="76" y="49" font-size="12" fill-opacity="0.92">Optimized SVG asset</text> </g> </g> </svg>

Salida

export default function PromoBadge(props) { return ( <svg xmlns="http://www.w3.org/2000/svg" width="240" height="72" viewBox="0 0 240 72" className="promo-badge" role="img" aria-labelledby="badge-title badge-desc" {...props}> <title id="badge-title">Fast delivery badge</title> <desc id="badge-desc">Rounded badge with lightning icon and gradient background.</desc> <defs> <linearGradient id="badgeGradient" x1="0%" y1="0%" x2="100%" y2="100%"> <stop offset="0%" stopColor="#f97316" /> <stop offset="100%" stopColor="#fb923c" /> </linearGradient> <clipPath id="badgeClip"> <rect x="0" y="0" width="240" height="72" rx="18" ry="18" /> </clipPath> </defs> <g clipPath="url(#badgeClip)"> <rect width="240" height="72" fill="url(#badgeGradient)" /> <g transform="translate(20 16)"> <circle cx="20" cy="20" r="20" fill="#0f172a" fillOpacity="0.14" /> <path fill="#fff" d="M24 4 11 22h9l-4 14 13-18h-9z" /> </g> </g> </svg> ) }

Atributo xlink:href

Entrada de ejemplo

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 10 10"><use xlink:href="#dot"/></svg>

Salida

Emite xlinkHref en <use> con un envoltorio de componente React.

Explorar herramientas SVG relacionadas

Optimiza primero con optimize SVG, valida la accesibilidad en validate SVG o abre el hub SVG.

FAQ de SVG a JSX

Conversión React ligera

¿Soporta CSS incrustado?

No en v1 — los bloques <style> se omiten. Los atributos style inline se convierten a objetos.

¿Export TypeScript?

Activa el interruptor TypeScript para añadir tipado de props en el componente.

¿Sprites?

Las sprite sheets quedan fuera de alcance — pega un único elemento <svg> raíz.

Previsualiza, optimiza con SVGO, exporta Data URI, redimensiona, embellece, convierte a JSX y valida SVG — todo en tu navegador.