跳至內容
Toova
所有工具

HTML → JSX 轉換工具

注重隱私的設計 — 完全在您的瀏覽器中執行

在左側貼上 HTML,即可在右側複製可直接用於 React 的 JSX。轉換器會把 class 改成 className、for 改成 htmlFor、inline 的 style 字串改寫成 camelCase 物件,並讓 img、input 等 void 元素自我閉合,以便 JSX 直接解析。

屬性與事件名稱重新對應

React 使用 DOM 屬性名稱而非 HTML 屬性,因此 tabindex 變成 tabIndex、readonly 變成 readOnly、colspan 變成 colSpan。內聯事件處理函式從 onclick 變成 onClick、onmouseover 變成 onMouseOver,所有標準處理函式皆轉為 camelCase。專屬於 HTML 的兩個改名是 class → className 與 for → htmlFor,因為兩者皆為 JavaScript 保留字。

style 字串轉成 camelCase 物件

JSX 要求 inline style 必須是物件字面值,且每個 CSS 屬性都要 camelCase。padding: 1rem; background-color: #fff 之類字串會被轉成 style={{ padding: '1rem', backgroundColor: '#fff' }}。轉換器處理 kebab-case 轉 camelCase、廠商前綴(-webkit-、-moz-、-ms-)以及 CSS 自訂屬性(--brand-color 保留原樣,必要時以字串作為鍵)。

隱私與邊界情況

轉換在這個分頁的單一 JavaScript 函式中執行,你的 HTML 不會離開瀏覽器,移植含有客戶資料的 markup 時相當實用。HTML 的 14 種 void 元素(img、input、br、hr、meta、link、area、base、col、embed、source、track、wbr、param)在輸出中會自我閉合,讓 JSX 能正常處理;data- 與 aria- 屬性則保持原貌,因為它們在 JSX 中已是合法寫法。

常見問題

哪些屬性會被改名?
class → className、for → htmlFor、tabindex → tabIndex、readonly → readOnly、colspan → colSpan,加上所有標準 DOM 屬性與 on* 事件處理函式都會轉成 camelCase。
style 字串如何轉換?
以分號切割,每個 CSS 屬性轉成 camelCase,並輸出為雙花括號的 JSX 物件。廠商前綴與 CSS 自訂屬性會被保留。
data-* 與 aria-* 會變嗎?
不會。JSX 接受 kebab 寫法,所以轉換器不會更動;只有標準 DOM 屬性才會被改名。
HTML 註解會被轉換嗎?
會。<!-- 註解 --> 會變成 {/* 註解 */},既保留意圖也不會破壞 JSX 解析器。
腳本與內聯事件處理函式呢?
轉換器會把 onclick 改成 onClick 等命名,但函式內容仍是字串。實務上,通常會在正式上線前改寫成真正的 React 回呼。
我的 HTML 會被送往任何地方嗎?
不會。轉換完全在這個瀏覽器分頁內進行;Toova 看不到你貼上的內容 — 沒有分析、沒有日誌,什麼都沒有。