Конвертер HTML в JSX
Преобразует: class в className, for в htmlFor, inline-стили в объекты JSX, самозакрывает пустые теги, удаляет HTML-комментарии.
JSX похож на HTML, пока не перестаёт им быть: class это className, for это htmlFor, style это объект, а не строка, и каждый пустой тег должен закрываться сам. Вставьте HTML, и этот конвертер выдаст JSX, который компилируется с первой попытки, так что вы перенесёте маркетинговую страницу в компонент React, не тратя десять минут на охоту за ошибками компилятора.
Как преобразовать HTML в JSX
-
1
Вставьте HTML
Разметка одного компонента или целый фрагмент страницы.
-
2
Преобразуйте
Инструмент переименовывает атрибуты вроде `class`, `for` и `readonly` в написание JSX и превращает встроенные стили в объекты.
-
3
Проверьте JSX
Результат готов к вставке в файл `.jsx` или `.tsx`.
-
4
Скопируйте и вставьте
Код состоит из однострочных выражений, поэтому хорошо ложится внутрь существующего компонента.
Каждое отличие HTML от JSX, которое имеет значение
JSX это не HTML. Это выражение JavaScript, которое компилируется в вызовы React.createElement(), поэтому имена атрибутов следуют соглашениям JavaScript.
Конвертер автоматически выполняет самые частые переименования. Полный список ниже это справочник, который нужен при ручном написании JSX.
Переименования атрибутов
| HTML | JSX | Примечания |
|---|---|---|
class |
className |
class зарезервирован в JS |
for |
htmlFor |
for зарезервирован |
tabindex |
tabIndex |
camelCase |
readonly |
readOnly |
camelCase |
contenteditable |
contentEditable |
camelCase |
stroke-width (SVG) |
strokeWidth |
camelCase |
xlink:href |
xlinkHref |
Пространства имён с двоеточием уплощаются |
aria-label |
aria-label |
ARIA сохраняет дефисы |
data-* |
data-* |
Атрибуты данных сохраняют дефисы |
Атрибут style
HTML: style="color: red; padding: 10px"
JSX: style={{ color: 'red', padding: 10 }}
Числовые значения без единиц измерения становятся пикселями; оставляйте строками проценты и значения без единиц, например flex.
Самозакрывающиеся пустые элементы
HTML допускает <br> и <input> без закрывающего тега. JSX требует <br /> и <input />, каждый элемент должен быть явно закрыт.
Комментарии
HTML-комментарии (<!-- -->) недопустимы в теле JSX. Этот конвертер удаляет их; если нужно сохранить заметку, напишите её сами в виде {/* Блок-комментарий JavaScript */}.
Булевы атрибуты
HTML: <input checked> (или <input checked="checked">)
JSX: <input checked={true} /> или просто <input checked />. Никогда не передавайте строку “true”.
Запасные ходы
- Ненадёжные фрагменты HTML можно отобразить через
dangerouslySetInnerHTML={{ __html: ... }}, намеренно некрасивый API, чтобы отпугнуть от использования. - Пользовательские атрибуты
data-*остаются как есть; нестандартные атрибуты передаются дальше, но могут вызвать предупреждения React в режиме разработки.
Часто задаваемые вопросы
Атрибуты SVG, например stroke-width, должны быть в camelCase (strokeWidth) в JSX, и каждый тег должен закрываться сам. Конвертер самозакрывает пустые теги внутри SVG и переводит имена свойств в строках стилей в camelCase, но не переименовывает атрибуты SVG; замените stroke-width на strokeWidth вручную. Для отдельных иконок чище всего сохранить иконку как файл SVG и импортировать её как компонент через svgr.
Да, и JSX, и TSX используют className. Единственное исключение это dangerouslySetInnerHTML, где исходная HTML-строка сохраняет class, потому что вставляется в DOM как есть.
Нет. На выходе только фрагмент JSX, без обёртки export default function и без аннотаций типов. Вставьте его в свой файл .jsx или .tsx и добавьте props, типы и обёртку сами. class по-прежнему превращается в className, чего и ожидает TSX.
Они передаются без изменений. Конвертер не переименовывает обработчики событий, поэтому замените onclick на onClick, а строку на настоящую функцию, например onClick={() => doThing()}. Функцию doThing нужно определить в области видимости вашего компонента.
Сопутствующие инструменты
Генератор вымышленных телефонных номеров
Создавайте до 50 вымышленных номеров из официально зарезервированных диапазонов пяти стран.
Генератор конфигурации webpack
Создайте webpack.config.js для webpack 5 под чистый JavaScript, React или Vue: TypeScript, Babel, CSS или Sass, изображения, HtmlWebpackPlugin, dev-сервер и команда npm install.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.
Валидатор XSD
Проверьте XML-документ в соответствии с схемой XSD и выявите несоответствия между элементами и их типами, указав точные номера строк.
Генератор случайных адресов
Создавайте 1–20 похожих на адрес записей для макетов и тестов в трёх упрощённых форматах.
Конвертер размера файлов
Преобразуйте значения между байтами, КБ, МБ, ГБ, ТБ и двоичными единицами IEC (KiB, MiB, GiB, TiB), свободно сочетая десятичные и двоичные единицы.
Инструмент доступен на других языках
- Convertisseur HTML en JSX [FR]
- Konverter HTML ke JSX [ID]
- HTML から JSX へのコンバーター [JA]
- Konwerter HTML na JSX [PL]
- Conversor de HTML para JSX [PT]
- ตัวแปลง HTML เป็น JSX [TH]
- محوّل HTML إلى JSX [AR]
- Bộ chuyển đổi HTML sang JSX [VI]
- HTML naar JSX converter [NL]
- HTML zu JSX Konverter [DE]
- HTML till JSX-omvandlare [SV]
- Convertidor de HTML a JSX [ES]
- HTML을 JSX로 변환하는 도구 [KO]
- HTML 转 JSX 转换器 [ZH]
- HTML to JSX Converter [EN]
- Convertitore HTML a JSX [IT]
- HTML'den JSX'e Dönüştürücü [TR]