UTILS.
Privés par défaut
⚛

HTML vers JSX / React

Convertissez un extrait HTML en JSX valide pour React — en renommant les attributs, en auto-fermant les balises vides et en transformant les styles en ligne en objets de style.

Vos fichiers restent sur cet appareil

Les fichiers sont traités dans votre navigateur, jamais envoyés. Le site télécharge le code et les ressources nécessaires aux outils. Sans compte ni traceurs.

Utilisez Télécharger pour enregistrer cet outil dans un fichier HTML utilisable hors ligne.

Confidentialité →
— la sortie apparaît ici —

À propos de cet outil

Le convertisseur HTML vers JSX / React analyse un extrait HTML avec le DOMParser natif du navigateur et le re-sérialise en JSX valide, en corrigeant tout ce dont React a besoin. Il s'exécute entièrement côté client, de sorte que le balisage que vous collez reste sur votre machine. Collez n'importe quel HTML — un export de design, un modèle d'e-mail, une esquisse de composant — et obtenez du JSX que vous pouvez déposer directement dans un fichier React.

La réécriture renomme les attributs réservés (class devient className, for devient htmlFor), met le reste en camelCase — tabindex vers tabIndex, maxlength vers maxLength, stroke-width vers strokeWidth — tout en laissant les attributs data-* et aria-* intacts. Les éléments vides comme img, br, input et hr sont auto-fermés (<img />), les commentaires HTML deviennent {/* ... */}, les accolades littérales dans le texte sont échappées en {'{'}, et une chaîne style="a:b;c:d" en ligne est convertie en objet style={{ a: 'b', c: 'd' }} avec des clés CSS en camelCase. Les attributs booléens comme disabled peuvent être émis nus ou en ={true} avec une bascule.

Choisissez la sortie fragment — les nœuds racines multiples sont automatiquement enveloppés dans un fragment <>...</> — ou la sortie composant complet, qui enveloppe le JSX dans une export default function avec le nom et l'indentation de votre choix (2 espaces, 4 espaces ou tabulations). Le résultat est prêt à coller ; comme l'analyse utilise un vrai DOM, l'imbrication malformée est normalisée de la même manière qu'un navigateur le ferait.

Foire aux questions

Quels attributs sont renommés ?
class devient className et for devient htmlFor ; les autres attributs à trait d'union ou réservés sont mis en camelCase (tabindex vers tabIndex, maxlength vers maxLength, stroke-width vers strokeWidth). Les attributs data-* et aria-* sont préservés exactement tels quels.
Comment les styles en ligne sont-ils gérés ?
Une chaîne style="color:red;font-size:14px" devient style={{ color: 'red', fontSize: '14px' }} — chaque propriété CSS est mise en camelCase et chaque valeur est émise en chaîne, ce qui est toujours valide pour les styles en ligne React.
Que se passe-t-il avec plusieurs éléments racines ?
JSX a besoin d'une racine unique, donc quand votre extrait a plusieurs nœuds de premier niveau, ils sont enveloppés dans un Fragment (<>...</>). Le mode composant complet les enveloppe plutôt dans une expression parenthésée retournée.
Convertit-il les commentaires et les balises vides ?
Oui. Les commentaires HTML deviennent des commentaires JSX {/* ... */}, et les éléments vides (img, br, input, hr, meta, link et les autres) sont rendus auto-fermés en <img />, ce que JSX exige.

Plus d'outils