每个将原始SVG粘贴进React项目的开发者,都深知这些痛点。
原始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转换作为浏览器内AST变换执行——零网络往返,零延迟,不受文件大小影响。
开启TSX模式,转换器自动在顶部添加interface IconProps extends React.SVGProps<SVGSVGElement>。每个props都有类型约束,className、自定义属性无需强制转换。
在SVG转React转换前,工具会去除Figma或Sketch导出的<title>、<defs>、空组和冗余属性,合并简化路径——SVG转React输出体积最多缩小60%。
开启Tailwind模式,SVG转React转换器将硬编码的fill和stroke颜色替换为className="fill-current"和currentColor。图标即时继承父元素文字颜色,完美适配任意主题。
所有带连字符的SVG属性——clip-rule、fill-opacity、stroke-linecap、xlink:href——都自动重命名为React的camelCase写法,class变为className。SVG转React输出始终是合法JSX。
一键移除SVG根元素的宽高硬编码。SVG转React组件将通过CSS或className prop自适应尺寸,完全响应式,易于父布局控制。
从原始SVG导出到可直接粘贴的React组件,30秒内完成。
从Figma、Sketch、图标库或SVG文件中复制SVG源码,直接粘贴到SVG转React工具的左侧面板。工具接受任意合法SVG,包括多路径图标和复杂插图。
根据项目需求选择输出格式和优化方式。开启TypeScript获得带类型props的TSX输出;开启SVGO压缩在SVG转React变换前清理Figma冗余代码;开启Tailwind CSS将硬编码颜色替换为currentColor。
输入时右侧面板实时显示SVG转React输出。点击复制将React组件发送到剪贴板,然后直接粘贴到.jsx或.tsx文件中,无需任何格式调整。
无论是构建设计系统、优化bundle体积,还是交付精致图标,SVG转React工具都能覆盖您的工作流。

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

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

关于SVG转换为React组件、TypeScript props及SVG优化的常见问题。
SVG转React,是指将从Figma、Sketch或图标库导出的原始SVG文件转换为可复用的React函数组件。SVG标记变成JSX,带连字符的属性变为camelCase,组件可接收className、width、aria-label等props。
将SVG内联为React组件,可以通过CSS控制fill和stroke、用Framer Motion为单个路径添加动画、为无障碍访问添加ARIA标签,以及在构建时tree-shake掉未使用的图标。<img>标签将SVG视为不透明图片,无法实现上述功能。
支持。开启TypeScript开关,SVG转React输出从.jsx格式切换为.tsx格式。转换器自动在文件顶部生成interface IconProps extends React.SVGProps<SVGSVGElement>,为每个props提供完整类型覆盖。
SVG转React工具处理所有已知的带连字符属性:clip-rule → clipRule、fill-opacity → fillOpacity、stroke-linecap → strokeLinecap、stroke-linejoin → strokeLinejoin、stroke-width → strokeWidth、xlink:href → href、class → className。输出始终是合法JSX。
在SVG转React变换之前,工具在浏览器内执行一次JavaScript SVGO遍历,去除设计工具生成的<title>、<desc>、<defs>、空<g>元素和冗余展示属性,合并简化复杂路径,生成更轻量的React组件。
开启Tailwind模式后,SVG转React工具将硬编码的fill="#hex"和stroke="#hex"属性替换为fill="currentColor"和stroke="currentColor",并在根<svg>元素上添加className="fill-current"。图标随即继承父元素的text-color类,完美支持暗色模式和主题切换。
不会。整个SVG转React转换过程在浏览器的JavaScript引擎内完成,SVG源代码从不离开您的设备。无后端、无上传、无日志、无速率限制。
可以,超大SVG(数百条路径)可能需要多一点处理时间。SVG转React工具支持多路径图标、剪切路径、渐变、蒙版以及嵌套组。对于极其复杂的插图,建议拆分为更小的组件以获得更好的React渲染性能。