ДокументыИзображенияМедиаИнструменты PDF

Конвертировать HTML в JSX React Онлайн

Трансформируйте HTML в валидный JSX для React и Next.js. Бесплатно, в браузере, без загрузки файлов.

Processed in your browser

HTML в JSX без синтаксических ошибок

Полная приватность

Конвертация происходит полностью в вашем браузере на чистом JavaScript. Ваш код не покидает устройство.

Полные трансформации

Применяем все необходимые конвертации: атрибуты, стили, события, void-теги и комментарии. Никаких ручных шагов.

Совместим с React и Next.js

Итоговый JSX валиден для React 16+, Next.js 12+ и любого фреймворка на основе React: Gatsby или Remix.

Мгновенно

Конвертация за миллисекунды без серверных вызовов. Вставьте и скопируйте — никакого ожидания.

Три шага — никаких сложностей

1

Вставьте ваш HTML

Вставьте HTML-код, который нужно конвертировать, в поле ввода. Это может быть полный HTML-документ или фрагмент.

2

Автоматическая конвертация

Конвертер применяет все необходимые трансформации: class→className, for→htmlFor, инлайновые стили в JS-объект и самозакрывающиеся void-теги.

3

Скопируйте итоговый JSX

Скопируйте готовый JSX прямо в ваши компоненты React или Next.js.

Остались вопросы?

Основные трансформации: class→className (class — зарезервированное слово в JS), for→htmlFor (for также зарезервировано), инлайновые стили конвертируются из CSS-строки в JavaScript-объект с camelCase-свойствами, void-теги самозакрываются (<br>→<br />, <img>→<img />), HTML-комментарии конвертируются в JSX-комментарии {/* */}.

React/Next.js требует JSX, поскольку компоненты написаны на JavaScript. JSX — синтаксический сахар поверх React.createElement(). При компиляции Babel или компилятором Next.js каждый JSX-тег преобразуется в вызов JavaScript-функции, что делает невозможным использование зарезервированных слов JS, таких как class или for, в качестве атрибутов.

В HTML: style="color: red; font-size: 16px". В JSX: style={{ color: 'red', fontSize: '16px' }}. CSS-свойства в kebab-case конвертируются в camelCase (font-size→fontSize, background-color→backgroundColor), значения — в JavaScript-строки или числа.

Обработчики событий в HTML используют нижний регистр (onclick, onchange, onsubmit). В JSX они конвертируются в camelCase: onclick→onClick, onchange→onChange, onsubmit→onSubmit, onmouseover→onMouseOver. Значение меняется со строки JS-кода на ссылку на функцию: onclick="myFunction()"→onClick={myFunction}.

Void-элементы в HTML — теги без содержимого и закрывающего тега: <br>, <img>, <input>, <hr>, <meta>, <link>. В JSX XML требует явного закрытия всех элементов, поэтому они должны быть записаны как <br />, <img /> и т.д. Без самозакрытия компилятор JSX выдаст синтаксическую ошибку.

История React JSX (Facebook 2013), различия HTML и JSX, миграция из HTML-шаблонов в React-компоненты, рабочий процесс Next.js

JSX (JavaScript XML) был представлен Facebook в 2013 году вместе с React как расширение синтаксиса JavaScript, позволяющее писать HTML-подобные структуры прямо в JS-коде. Хотя React можно использовать без JSX через прямые вызовы React.createElement(), JSX быстро стал де-факто стандартом, поскольку значительно улучшает читаемость кода компонентов. Babel, а впоследствии компилятор SWC из Next.js, трансформируют JSX в чистый JavaScript в процессе сборки.

Различия между HTML и JSX обусловлены тем, что JSX работает в контексте JavaScript. Наиболее важное: class — зарезервированное слово в JavaScript (для определения ES6-классов), поэтому React выбрал className как эквивалентный атрибут. Аналогично, for — зарезервированное слово (для циклов), поэтому атрибут <label> записывается как htmlFor. Инлайновые стили требуют JavaScript-объекта вместо CSS-строки, поскольку это безопаснее в JS-контексте и позволяет интерполяцию переменных.

Миграция статических HTML-шаблонов в React-компоненты — частый сценарий: дизайнеры или разработчики, работающие с чистым HTML, должны интегрировать свои дизайны в проекты Next.js или Create React App. Ручной процесс утомителен и чреват ошибками, особенно для сложного HTML с многочисленными атрибутами стилей, обработчиками событий и void-элементами. Автоматизированные инструменты конвертации HTML в JSX значительно ускоряют этот миграционный процесс в проектах любого масштаба.