NEW免费SVG转React工具

SVG to React

粘贴原始SVG代码,毫秒级生成可直接用于生产的React组件。我们的SVG转React工具完全在浏览器内运行——无需上传、无需后端、零延迟。

手动修改SVG以兼容React为何如此低效

每个将原始SVG粘贴进React项目的开发者,都深知这些痛点。

camelCase错误导致构建失败

原始SVG使用带连字符的属性,如clip-rule、fill-opacity和stroke-linecap。React要求camelCase写法——clipRule、fillOpacity、strokeLinecap。哪怕遗漏一个,都可能引发运行时错误或难以排查的样式问题。

硬编码颜色导致组件无法复用

Figma和Sketch导出的SVG内嵌了fill="#3B82F6"等固定颜色。每个图标都变成了一次性属性,。要在暗色主题、悬停状态或不同品牌色下复用同一SVG,必须逐一克隆再修改。

冗余代码拖累性能

设计工具会在每个导出的SVG中塞入<title>、<defs>、空<g>组和冗余属性。这些无用代码会膨胀JSX bundle,拖慢解析速度——在内联数十个图标时尤为明显。

SVG转React组件转换器

左侧粘贴SVG,右侧获取React组件

转换选项

SVG转React工具能为您做什么

六项生产级转换,即时应用,全部在浏览器内完成。

实时SVG转React转换

粘贴任意SVG,React组件即刻出现。SVG转React转换作为浏览器内AST变换执行——零网络往返,零延迟,不受文件大小影响。

TypeScript接口自动生成

开启TSX模式,转换器自动在顶部添加interface IconProps extends React.SVGProps<SVGSVGElement>。每个props都有类型约束,className、自定义属性无需强制转换。

内置SVGO压缩

在SVG转React转换前,工具会去除Figma或Sketch导出的<title>、<defs>、空组和冗余属性,合并简化路径——SVG转React输出体积最多缩小60%。

Tailwind CSS类注入

开启Tailwind模式,SVG转React转换器将硬编码的fill和stroke颜色替换为className="fill-current"和currentColor。图标即时继承父元素文字颜色,完美适配任意主题。

camelCase属性转换

所有带连字符的SVG属性——clip-rule、fill-opacity、stroke-linecap、xlink:href——都自动重命名为React的camelCase写法,class变为className。SVG转React输出始终是合法JSX。

响应式尺寸剥离

一键移除SVG根元素的宽高硬编码。SVG转React组件将通过CSS或className prop自适应尺寸,完全响应式,易于父布局控制。

3步完成SVG转React

从原始SVG导出到可直接粘贴的React组件,30秒内完成。

01

第一步——粘贴原始SVG

从Figma、Sketch、图标库或SVG文件中复制SVG源码,直接粘贴到SVG转React工具的左侧面板。工具接受任意合法SVG,包括多路径图标和复杂插图。

  • 支持Figma、Sketch、Illustrator及开源图标集导出的SVG
  • 请粘贴包含根元素在内的完整<svg>...</svg>块
  • 一次SVG转React转换中完全支持多个<path>元素
02

第二步——选择转换选项

根据项目需求选择输出格式和优化方式。开启TypeScript获得带类型props的TSX输出;开启SVGO压缩在SVG转React变换前清理Figma冗余代码;开启Tailwind CSS将硬编码颜色替换为currentColor。

💡 Pro Tip:对于设计系统,建议全部开启四个选项:TypeScript + SVGO + Tailwind + 移除尺寸。即可获得零配置、主题感知、带类型的SVG转React图标组件,可直接投入Next.js或Vite项目。
03

第三步——复制React组件

输入时右侧面板实时显示SVG转React输出。点击复制将React组件发送到剪贴板,然后直接粘贴到.jsx或.tsx文件中,无需任何格式调整。

  • 组件名称从文件上下文推断,请根据命名规范自行修改
  • JSX输出兼容React v16及以上所有版本
  • TSX输出需要TypeScript 4.1+和@types/react

三种SVG转React工作流,一个工具搞定

无论是构建设计系统、优化bundle体积,还是交付精致图标,SVG转React工具都能覆盖您的工作流。

即时SVG转React——实时双面板预览

在左侧粘贴原始SVG,右侧实时呈现React组件。SVG转React变换以纯浏览器AST遍历方式运行——无等待、无服务器、无速率限制。

SVG to React live dual-panel preview — raw SVG input on the left, formatted React component output on the right

TypeScript优先的SVG转React输出

一键切换SVG转React输出从JSX到TSX,自动生成interface IconProps extends React.SVGProps<SVGSVGElement>。每个CSS类、aria标签和事件处理器均完全类型化,可直接用于严格模式的Next.js或Vite项目。

SVG to React TypeScript output showing auto-generated IconProps interface and TSX toggle controls

SVGO + Tailwind:优化的SVG转React

转换器在SVG转React变换前运行SVGO压缩——剥离Figma元数据、合并冗余路径、文件体积最多缩小60%。Tailwind模式再将硬编码fill颜色替换为currentColor,每个图标无需任何CSS覆盖即可适配主题。

SVG to React SVGO compression before-after comparison with Tailwind currentColor injection

SVG转React——常见问题

关于SVG转换为React组件、TypeScript props及SVG优化的常见问题。

SVG转React是什么意思?

SVG转React,是指将从Figma、Sketch或图标库导出的原始SVG文件转换为可复用的React函数组件。SVG标记变成JSX,带连字符的属性变为camelCase,组件可接收className、width、aria-label等props。

为什么要将SVG转为React组件而不是用<img>标签?

将SVG内联为React组件,可以通过CSS控制fill和stroke、用Framer Motion为单个路径添加动画、为无障碍访问添加ARIA标签,以及在构建时tree-shake掉未使用的图标。<img>标签将SVG视为不透明图片,无法实现上述功能。

这个SVG转React工具支持TypeScript吗?

支持。开启TypeScript开关,SVG转React输出从.jsx格式切换为.tsx格式。转换器自动在文件顶部生成interface IconProps extends React.SVGProps<SVGSVGElement>,为每个props提供完整类型覆盖。

转换器会重命名哪些SVG属性以兼容React?

SVG转React工具处理所有已知的带连字符属性:clip-rule → clipRule、fill-opacity → fillOpacity、stroke-linecap → strokeLinecap、stroke-linejoin → strokeLinejoin、stroke-width → strokeWidth、xlink:href → href、class → className。输出始终是合法JSX。

SVGO压缩是如何工作的?

在SVG转React变换之前,工具在浏览器内执行一次JavaScript SVGO遍历,去除设计工具生成的<title>、<desc>、<defs>、空<g>元素和冗余展示属性,合并简化复杂路径,生成更轻量的React组件。

Tailwind CSS选项有什么作用?

开启Tailwind模式后,SVG转React工具将硬编码的fill="#hex"和stroke="#hex"属性替换为fill="currentColor"和stroke="currentColor",并在根<svg>元素上添加className="fill-current"。图标随即继承父元素的text-color类,完美支持暗色模式和主题切换。

我的SVG代码会被发送到服务器吗?

不会。整个SVG转React转换过程在浏览器的JavaScript引擎内完成,SVG源代码从不离开您的设备。无后端、无上传、无日志、无速率限制。

能转换大型或复杂的SVG插图吗?

可以,超大SVG(数百条路径)可能需要多一点处理时间。SVG转React工具支持多路径图标、剪切路径、渐变、蒙版以及嵌套组。对于极其复杂的插图,建议拆分为更小的组件以获得更好的React渲染性能。

立即开始SVG转React

免费、即时,完全在浏览器内运行。无需账号。

100%免费 · 无需注册 · 无需上传 · 支持离线