UTILS.
100 % im Browser

HTML zu JSX / React

Konvertieren Sie ein HTML-Snippet in gültiges JSX für React — Attribute umbenennen, void-Tags selbstschließend machen und Inline-Styles in Style-Objekte verwandeln.

— Ausgabe erscheint hier —

Über dieses Tool

Der Konverter HTML zu JSX / React parst ein HTML-Snippet mit dem nativen DOMParser des Browsers und serialisiert es erneut als gültiges JSX, wobei alles behoben wird, was React benötigt. Er läuft vollständig clientseitig, sodass das eingefügte Markup auf Ihrem Gerät bleibt. Fügen Sie beliebiges HTML ein — einen Design-Export, eine E-Mail-Vorlage, eine Komponentenskizze — und erhalten Sie JSX, das Sie direkt in eine React-Datei einfügen können.

Die Umschreibung benennt reservierte Attribute um (class wird zu className, for wird zu htmlFor), setzt den Rest in camelCase — tabindex zu tabIndex, maxlength zu maxLength, stroke-width zu strokeWidth — und lässt data-*- und aria-*-Attribute unangetastet. Void-Elemente wie img, br, input und hr werden selbstschließend gemacht (<img />), HTML-Kommentare werden zu {/* ... */}, wörtliche geschweifte Klammern im Text werden als {'{'} escapt, und ein Inline-String style="a:b;c:d" wird in ein Objekt style={{ a: 'b', c: 'd' }} mit camelCase-CSS-Schlüsseln umgewandelt. Boolean-Attribute wie disabled können mit einem Umschalter nackt oder als ={true} ausgegeben werden.

Wählen Sie Fragment-Ausgabe — mehrere Wurzelknoten werden automatisch in ein Fragment <>...</> gewickelt — oder vollständige Komponentenausgabe, die das JSX in eine export default function mit Ihrem gewählten Namen und Einrückung (2 Leerzeichen, 4 Leerzeichen oder Tabs) einwickelt. Das Ergebnis ist einsatzbereit; da das Parsen ein echtes DOM verwendet, wird fehlerhafte Verschachtelung so normalisiert, wie es ein Browser tun würde.

Häufig gestellte Fragen

Welche Attribute werden umbenannt?
class wird zu className und for wird zu htmlFor; andere Attribute mit Bindestrich oder reservierte Attribute werden in camelCase gesetzt (tabindex zu tabIndex, maxlength zu maxLength, stroke-width zu strokeWidth). data-*- und aria-*-Attribute werden exakt wie geschrieben beibehalten.
Wie werden Inline-Styles behandelt?
Ein String style="color:red;font-size:14px" wird zu style={{ color: 'red', fontSize: '14px' }} — jede CSS-Eigenschaft wird in camelCase gesetzt und jeder Wert als String ausgegeben, was für React-Inline-Styles immer gültig ist.
Was passiert bei mehreren Wurzelelementen?
JSX benötigt eine einzelne Wurzel, daher werden sie, wenn Ihr Snippet mehrere Knoten auf oberster Ebene hat, in ein Fragment (<>...</>) gewickelt. Der Vollkomponenten-Modus wickelt sie stattdessen in einen zurückgegebenen geklammerten Ausdruck.
Konvertiert es Kommentare und void-Tags?
Ja. HTML-Kommentare werden zu JSX-Kommentaren {/* ... */}, und void-Elemente (img, br, input, hr, meta, link und die übrigen) werden selbstschließend als <img /> gerendert, was JSX erfordert.

Weitere Tools