この SVG 変換ツールでできること
Figma、Illustrator、Sketch、Inkscape から書き出した SVG は正しい XML ですが、正しい JSX ではありません。React では stroke-width ではなく strokeWidth のようなキャメルケースの props、class ではなく className、CSS 文字列ではなくスタイルオブジェクトが必要です。さらにデザインツールは XML 宣言、コメント、メタデータ、名前空間付きの属性を書き出すため、バンドルが膨らみ警告の原因になります。
SvgJsx は小さな XML パーサーで SVG を解析し、各属性をフレームワークが期待する形に書き換えて、整形済みのコンポーネントを出力します。TypeScript の型、size プロパティ、currentColor による塗り、forwardRef、memo、エクスポート形式を選んで、コードをコピーするかファイルとしてダウンロードできます。
SVG を React コンポーネントに変換する手順
数秒で完了します。
- 入力欄に SVG コードを貼り付けるか、1 つ以上の .svg ファイルをドロップします。
- 出力形式を選びます:React、React Native、Vue、Solid、または JSX スニペットのみ。
- コンポーネント名と、TypeScript・currentColor・size プロパティなどのオプションを設定します。
- ライブプレビューとサイズ比較を確認し、コードをコピーするかファイルをダウンロードします。複数ファイルは ZIP にまとめられます。
自動で行われる変換
ハイフン付きの属性はキャメルケースに(stroke-linecap → strokeLinecap)、名前空間付きの属性はフラットに(xlink:href → xlinkHref)、インラインの style 文字列は JavaScript オブジェクトに変換されます。data-* と aria-* 属性は React がそのまま受け付けるため変更しません。script 要素とインラインのイベントハンドラは削除されるので、貼り付けたファイルからアプリにコードが紛れ込むことはありません。
軽量な最適化として空白を圧縮し、座標を指定した小数点以下の桁数に丸めることもできます。多くのアイコンセットでは、重い SVGO に頼らずマークアップを 20〜40% 削減できます。