UTILS.
100% w przeglądarce

HTML na JSX / React

Konwertuj fragment HTML w prawidłowy JSX dla React — zmieniając nazwy atrybutów, samozamykając puste tagi i zamieniając style inline w obiekty style.

— wynik pojawi się tutaj —

O tym narzędziu

Konwerter HTML na JSX / React parsuje fragment HTML za pomocą natywnego DOMParser przeglądarki i ponownie serializuje go jako prawidłowy JSX, naprawiając wszystko, czego potrzebuje React. Działa w całości po stronie klienta, więc znaczniki, które wklejasz, pozostają na Twojej maszynie. Wklej dowolny HTML — eksport z projektu, szablon e-maila, szkic komponentu — i otrzymaj JSX, który możesz wstawić bezpośrednio do pliku React.

Przepisywanie zmienia nazwy zarezerwowanych atrybutów (class staje się className, for staje się htmlFor), zamienia resztę na camelCase — tabindex na tabIndex, maxlength na maxLength, stroke-width na strokeWidth — pozostawiając atrybuty data-* i aria-* nietknięte. Puste elementy, takie jak img, br, input i hr, stają się samozamykające (<img />), komentarze HTML stają się {/* ... */}, dosłowne nawiasy klamrowe w tekście są zabezpieczane jako {'{'}, a łańcuch style="a:b;c:d" inline jest konwertowany w obiekt style={{ a: 'b', c: 'd' }} z kluczami CSS w camelCase. Atrybuty logiczne, takie jak disabled, mogą być emitowane gołe lub jako ={true} za pomocą przełącznika.

Wybierz wyjście fragmentu — wiele węzłów głównych jest automatycznie opakowywanych we fragment <>...</> — lub wyjście pełnego komponentu, które opakowuje JSX w export default function z wybraną przez Ciebie nazwą i wcięciem (2 spacje, 4 spacje lub tabulatory). Wynik jest gotowy do wklejenia; ponieważ parsowanie używa prawdziwego DOM, nieprawidłowe zagnieżdżenie jest normalizowane tak samo, jak zrobiłaby to przeglądarka.

Najczęściej zadawane pytania

Które atrybuty są zmieniane?
class staje się className, a for staje się htmlFor; inne atrybuty z myślnikiem lub zarezerwowane są zamieniane na camelCase (tabindex na tabIndex, maxlength na maxLength, stroke-width na strokeWidth). Atrybuty data-* i aria-* są zachowywane dokładnie tak, jak zapisane.
Jak obsługiwane są style inline?
Łańcuch style="color:red;font-size:14px" staje się style={{ color: 'red', fontSize: '14px' }} — każda właściwość CSS jest zamieniana na camelCase, a każda wartość jest emitowana jako łańcuch, co jest zawsze prawidłowe dla stylów inline React.
Co dzieje się z wieloma elementami głównymi?
JSX potrzebuje pojedynczego korzenia, więc gdy Twój fragment ma kilka węzłów najwyższego poziomu, są one opakowywane we Fragment (<>...</>). Tryb pełnego komponentu zamiast tego opakowuje je w zwracane wyrażenie w nawiasach.
Czy konwertuje komentarze i puste tagi?
Tak. Komentarze HTML stają się komentarzami JSX {/* ... */}, a puste elementy (img, br, input, hr, meta, link i pozostałe) są renderowane jako samozamykające <img />, czego wymaga JSX.

Więcej narzędzi