1001Ferramentas
🔄Conversores

Conversor JSX para HTML

Converte sintaxe JSX (React) para HTML padrão substituindo className por class e atributos camelCase em kebab-case.

JSX para HTML: onde o kebab erra

Você tem um bloco de JSX, um card ou um ícone em SVG, e precisa dele como HTML puro para um e-mail, um template Handlebars ou uma landing estática. Colar direto não funciona: className não é atributo e o comentário entre chaves aparece como texto na tela. Esta página troca className por class, htmlFor por for, converte os comentários JSX em comentário HTML e passa tudo que está em camelCase para kebab-case.

Essa regra do kebab acerta no SVG e erra no HTML. Em SVG, strokeWidth vira mesmo stroke-width e fillRule vira fill-rule. Já os atributos de HTML são minúsculos e sem hífen: tabIndex é tabindex, readOnly é readonly, maxLength é maxlength, e a conversão devolve tab-index, read-only e max-length, que o navegador ignora. A troca também vale para o texto inteiro, então onClick vira on-click e um componente MyCard vira My-card.

Use com JSX que é praticamente marcação: estrutura, classes, SVG. Depois de converter, dê uma passada procurando hífen onde não devia ter, apague as chaves de expressão e remova os manipuladores de evento, que não têm equivalente em HTML. Se o componente tem lógica, condicional ou map, esta página não ajuda e essa parte precisa ser reescrita à mão. Tudo acontece no navegador, sem envio de nada.

Perguntas frequentes

Ele converte HTML de volta para JSX?
Não, o caminho é só de ida. Para o inverso, o mínimo é trocar class por className, for por htmlFor e fechar as tags vazias, como a de quebra de linha.
Por que o texto do meu parágrafo apareceu com hífen?
A regra de camelCase não distingue atributo de conteúdo. Palavras como iPhone saem como i-phone, então leia a saída antes de publicar.
E o style com objeto entre chaves duplas?
Não é tratado. Em HTML o style recebe uma string com as declarações CSS, não um objeto, então essa parte é reescrita à mão.

Ferramentas Relacionadas