不喜欢广告? 无广告 今天

SVG 转 React JSX 组件转换器

开发人员文本
广告 移除?
必须以大写字母开头。用作 React 组件名称。
广告 移除?

指导

SVG 到 React JSX 组件转换器

SVG 转 React JSX 组件转换器

粘贴原始 SVG 代码,即可获得一个干净的 React 函数组件。该工具对每个属性进行确定性的 camelCase 转换,移除非 JSX 语法,并将输出包裹在可导入的组件中——可选地添加类型,可选地包裹,也可通过属性进行缩放。所有操作都在您的浏览器中本地运行,因此您的图标和标志永远不会离开您的设备。 forwardRef- 包裹,可选地通过属性进行缩放。所有内容都在您的浏览器中运行,因此您的图标和标志永远不会离开您的机器。

如何使用

  1. 粘贴完整 <svg>…</svg> 代码到输入框中。
  2. 设置组件名称(PascalCase,例如 ArrowRightIcon).
  3. 切换 TypeScript, forwardRef,可缩放大小属性和属性传播,以适应您的项目。
  4. 复制生成的 JSX 代码或将其下载为一个 .tsx / .jsx 文件。

特征

  • camelCase 属性 - stroke-width 变成 strokeWidth, fill-rule 变成 fillRule,以此类推,覆盖整个 SVG 规范。
  • 保留关键字处理 - class 被重写为 className, forhtmlFor,并且 xlink:hrefxlinkHref.
  • 内联样式解析器 - style="color: red; font-size: 12px" 被转换为具有 camelCase 键的 JSX 样式对象。
  • TypeScript 输出 – 在启用时生成 React.SVGProps<SVGSVGElement> 类型定义。
  • 可缩放图标模式 – 将硬编码的 width/height 替换为带有合理默认值的属性。 widthheight forwardRef 包裹器
  • – 生成一个带有 的组件,供 DevTools 使用。 React.forwardRef 属性传播 displayName – 将任意属性传递到根元素
  • ,以便消费者可以设置 ,ARIA 或事件处理器。 <svg> 离线设计 className– SVG 从未离开浏览器;没有上传,没有服务器往返。
  • 为什么 React 和 JSX 会重写 SVG 属性名称? JSX 直接编译为 JavaScript 对象属性访问,而 JavaScript 标识符不能包含连字符。因此 React 统一采用 camelCase 属性名称,以匹配 DOM IDL — 例如,

常问问题

  1. 因为 DOM 以

    的形式暴露它。少数属性( stroke-width 变成 strokeWidth )与 JavaScript 保留关键字冲突,因此被重命名为( element.strokeWidth)以避免解析冲突。class, forReact.forwardRef 对 SVG 组件有什么作用?className, htmlFor默认情况下,函数组件无法从父级接收一个

  2. ——React 会静默忽略它。

    通过 forwardRef,将底层 DOM 节点暴露给父级,这对于需要直接访问渲染出的 ref 以进行聚焦管理、测量或与 Framer Motion 或 GSAP 等动画库集成至关重要。 React.forwardRef 为什么 SVG 应该作为 React 组件嵌入,而不是内联图片? <svg> 将 SVG 嵌入为 JSX 可以让您完全控制 DOM 树:您可以使用 CSS 变量来主题笔触和填充,对路径进行动画,运行时切换颜色,并在构建时树状删除未使用的图标。一个

  3. 行为就像一个不透明的位图元素——您无法从宿主页面对其内部进行样式设置。

    为什么将 width 和 height 作为属性而不是硬编码属性? <img src="icon.svg"> 硬编码的像素尺寸会将图标固定在单一尺寸,使其在布局中组合时变得不灵活。将

  4. 作为属性暴露(通常与原始

    配合使用)可以让消费者在工具栏中以 16px 的尺寸渲染,在英雄横幅中以 48px 的尺寸渲染,SVG 的矢量缩放在每个尺寸下都保持清晰。 widthheight MyIcon viewBox在此处粘贴您的 ... 代码...

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 移除?
广告 移除?
广告 移除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 移除?