HTML 转 JSX 转换器
在你的浏览器中,将 HTML 转换为有效的 React JSX——class 变成 className,空标签自闭合,行内样式变成 style 对象。你的标记都留在你的设备上。
HTML 转 JSX 转换器完全在你的浏览器中运行。你粘贴的标记会在你的设备上被解析和转换,绝不会上传到 ArrayKit。
打开 HTML 格式化工具
关于 HTML 转 JSX 转换器
HTML 转 JSX 转换器会把一段 HTML 变成你可以直接放进 React 组件的 JSX。它会重命名 React 坚持要求的属性——class 变成 className,for 变成 htmlFor——把其余的改为驼峰式(tabindex → tabIndex,colspan → colSpan),并自闭合 br、img 和 input 等空元素,让标记合法。行内的 style="color:red" 字符串会被解析成属性为驼峰式的 style={{ color: 'red' }} 对象,HTML 注释会变成 JSX 注释。开启组件选项即可把所有内容包裹进一个导出的函数。它专为把一份设计、一个邮件模板或一个静态页面移植到 React 的开发者而打造。每次转换都在你的浏览器中运行——你粘贴的标记绝不会离开你的设备。
功能特性
- 自动把 class 重命名为 className,把 for 重命名为 htmlFor
- 自闭合 br、img、input 和 hr 等空元素
- 把行内 style 字符串转换为驼峰式的 style 对象
- 把已知属性改为驼峰式:tabindex 转 tabIndex,colspan 转 colSpan
- 把 HTML 注释改写为 JSX 注释语法
- 完整保留 data-* 和 aria-* 属性以及布尔型 prop
- 可选择把结果包裹进一个导出的 React 函数组件
- 复制 JSX 或将其下载为 .jsx 文件,全部在你的浏览器中完成
如何使用 HTML 转 JSX 转换器
- 把你的 HTML 粘贴到左侧的输入框中
- 在右侧的输出面板中查看转换后的 JSX
- 开启「包裹进组件」并为它命名,以获得一个可直接使用的组件
- 复制 JSX 或将其下载为 .jsx 文件
示例
输入
<label for="name" class="lbl" tabindex="0">Name</label>
<input type="text" required>
输出
<label htmlFor="name" className="lbl" tabIndex="0">Name</label>
<input type="text" required />
for 变成 htmlFor,class 变成 className,tabindex 变成 tabIndex,而空元素 <input> 会自闭合。
常见错误与故障排除
- React 警告「class」是无效的 DOM 属性。 — 把 HTML 交给转换器处理——它会把每个 class 重命名为 className(并把 for 改为 htmlFor),警告便会消失。
- JSX 编译失败,在 <img> 或 <br> 上报「Expected corresponding closing tag」。 — 在 JSX 中空元素必须自闭合。转换器会输出 <img … /> 和 <br />,让标签能够干净地解析。
- style 属性报错「style prop expects a mapping, not a string」。 — React 的样式是对象,而非字符串。粘贴 HTML,工具会把 style="color:red" 变成 style={{ color: 'red' }}。
- 文本中一个字面的花括号或一个原始的 < 会破坏 JSX。 — 转换器会转义文本节点内的 { } 和 < >(转为 { 和 <),因此这些字符会作为文本渲染,而不会被当作 JSX 读取。
常见问题
- 哪些 HTML 属性会被重命名为 JSX 形式?
- class 变成 className,for 变成 htmlFor。许多全小写属性会被改为驼峰式——tabindex 转 tabIndex,colspan 转 colSpan,maxlength 转 maxLength,readonly 转 readOnly——而 data-* 和 aria-* 属性会原样保留。
- 它如何转换行内 style 属性?
- 一个 style="color: red; font-size: 12px" 字符串会被解析成一个 React style 对象 style={{ color: 'red', fontSize: '12px' }},每个 CSS 属性都改为驼峰式。像 --brand 这样的 CSS 自定义属性和厂商前缀都会被保留。
- 它会自闭合像 <br> 和 <img> 这样的空元素吗?
- 会的。HTML 空元素——br、img、input、hr、meta、link、source 等——会以自闭合形式输出(<br />、<img … />),从而让 JSX 合法。空的非空元素也会被自闭合。
- 转换过程中 HTML 注释会怎样?
- HTML 注释会被改写为 JSX 注释语法。如果注释文本包含一个星号加斜杠的序列,它会被拆开,以免提前闭合 JSX 注释而破坏你的构建。
- 它能把输出包裹进一个 React 组件吗?
- 开启「包裹进组件」并为它命名。工具会输出一个返回你 JSX 的导出函数,并把多个顶层元素包裹进一个 fragment,从而只有一个根元素。
- 它会转换 onclick 和其他行内事件处理器吗?
- 行内事件属性会被改为驼峰式——onclick 转 onClick,onchange 转 onChange——但其值仍是字符串。你仍需在你的组件中把该字符串替换为一个真正的处理器函数。
相关工具
全部 ArrayKit 工具