UTILS.
100% nel browser

Da HTML a JSX / React

Converti uno snippet HTML in JSX valido per React — rinominando gli attributi, autochiudendo i tag void e trasformando gli stili inline in oggetti style.

— l'output appare qui —

Informazioni su questo strumento

Il convertitore Da HTML a JSX / React analizza uno snippet HTML con il DOMParser nativo del browser e lo ri-serializza come JSX valido, sistemando tutto ciò di cui React ha bisogno. Funziona interamente lato client, quindi il markup che incolli resta sulla tua macchina. Incolla qualsiasi HTML — un'esportazione di design, un template di email, uno schizzo di componente — e ottieni JSX da inserire direttamente in un file React.

La riscrittura rinomina gli attributi riservati (class diventa className, for diventa htmlFor), rende gli altri in camelCase — tabindex in tabIndex, maxlength in maxLength, stroke-width in strokeWidth — lasciando intatti gli attributi data-* e aria-*. Gli elementi void come img, br, input e hr vengono autochiusi (<img />), i commenti HTML diventano {/* ... */}, le parentesi graffe letterali nel testo vengono escapate come {'{'}, e una stringa inline style="a:b;c:d" viene convertita in un oggetto style={{ a: 'b', c: 'd' }} con chiavi CSS in camelCase. Gli attributi booleani come disabled possono essere emessi nudi o come ={true} con un interruttore.

Scegli l'output fragment — più nodi radice vengono automaticamente racchiusi in un fragment <>...</> — o l'output a componente completo, che racchiude il JSX in un export default function con il nome e l'indentazione che scegli (2 spazi, 4 spazi o tab). Il risultato è pronto da incollare; poiché l'analisi usa un DOM reale, l'annidamento malformato viene normalizzato allo stesso modo di un browser.

Domande frequenti

Quali attributi vengono rinominati?
class diventa className e for diventa htmlFor; gli altri attributi con trattino o riservati vengono resi in camelCase (tabindex in tabIndex, maxlength in maxLength, stroke-width in strokeWidth). Gli attributi data-* e aria-* vengono preservati esattamente come scritti.
Come vengono gestiti gli stili inline?
Una stringa style="color:red;font-size:14px" diventa style={{ color: 'red', fontSize: '14px' }} — ogni proprietà CSS viene resa in camelCase e ogni valore viene emesso come stringa, che è sempre valido per gli stili inline di React.
Cosa succede con più elementi radice?
JSX ha bisogno di una singola radice, quindi quando il tuo snippet ha diversi nodi di primo livello vengono racchiusi in un Fragment (<>...</>). La modalità a componente completo invece li racchiude in un'espressione tra parentesi restituita.
Converte i commenti e i tag void?
Sì. I commenti HTML diventano commenti JSX {/* ... */}, e gli elementi void (img, br, input, hr, meta, link e gli altri) vengono resi autochiusi come <img />, come richiede JSX.

Altri strumenti