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-* 属性、真偽値のプロパティはそのまま保持
- 任意で、結果をエクスポートされた 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 に)改名するので、警告は消えます。
- <img> や <br> で 'Expected corresponding closing tag' が出て JSX がコンパイルに失敗する。 — 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 を返すエクスポートされた関数を出力し、複数の最上位要素はフラグメントで包んで、単一のルート要素にします。
- onclick などのインラインのイベントハンドラーを変換しますか?
- インラインのイベント属性はキャメルケース化されます — onclick は onClick、onchange は onChange — が、値は文字列のままです。コンポーネント内で、その文字列を実際のハンドラー関数に差し替える必要があります。
関連ツール
すべての ArrayKit ツール