IT Market
Инструменты/Код/Документы/HTML в JSX онлайн — конвертер вёрстки в React
HTML → JSX

Конвертируйте HTML в JSX (React)

Коротко об инструменте

HTML в JSX онлайн — конвертер вёрстки в React

Готовый блок вёрстки из макета, письма или чужого шаблона не вставить в React как есть: JSX требует className вместо class, htmlFor вместо for и объект вместо строки в атрибуте style. Руками это правится долго и с опечатками. Вставьте разметку в поле HTML Input, нажмите Convert — и в JSX Output появится тот же фрагмент с исправленными атрибутами, готовый лечь внутрь return компонента. Преобразование идёт в браузере. Смотрите также: вернуть JSX обратно в обычную вёрстку, вытащить из разметки только текст, экранировать спецсимволы в разметке.

Как пользоваться

  1. Вставьте фрагмент разметки в поле HTML Input — можно один блок, можно всю секцию страницы.
  2. Нажмите Convert: атрибуты class и for переименовываются, а style="..." превращается в style={{...}}.
  3. Прочитайте результат в поле JSX Output и убедитесь, что кавычки в объекте стилей стоят вокруг значений.
  4. Нажмите Copy и вставьте фрагмент внутрь return вашего компонента, обернув его в один корневой элемент.
  5. Дозакройте одиночные теги вручную: br, img и input JSX требует писать как , конвертер их не трогает.

Вопросы и ответы

Какие именно атрибуты переименовываются?

Три вещи: class становится className, for становится htmlFor, а строка в style разбирается на пары и собирается в объект с camelCase-ключами, где background-color превращается в backgroundColor. Остальные атрибуты переносятся как есть, поэтому tabindex, colspan и onclick придётся поправить руками до tabIndex, colSpan и onClick.

Почему после вставки React ругается на незакрытый тег br?

Потому что конвертер не дописывает закрывающий слеш. В HTML теги br, img, input, hr самозакрывающиеся по умолчанию, а JSX требует явного вида . Пройдитесь по результату поиском и добавьте пробел со слешем — обычно это две-три правки на фрагмент.

Можно ли вставить сюда целую HTML-страницу с head и body?

Технически да, но пользы мало: компонент не может содержать doctype, html, head и script-теги в таком виде. Берите только содержимое нужного блока — секцию, карточку, форму. И помните, что JSX допускает лишь один корневой элемент: несколько соседних тегов оберните в или во фрагмент ….

Что происходит с HTML-комментариями внутри разметки?

Надёжного преобразования комментариев здесь нет, а JSX не понимает синтаксис . Самый безопасный путь — удалить комментарии из фрагмента до конвертации либо переписать нужные вручную в виде {/* текст */} уже в готовом коде компонента.

Подойдёт ли результат для Vue или Angular?

Нет, className и htmlFor — это соглашения React. Vue и Angular работают с обычным class, поэтому конвертированный фрагмент им не нужен и даже помешает. Если вёрстка едет в Vue, оставляйте исходный HTML и правьте только привязки данных.

Отправляется ли вставленный код на сервер?

Нет, замены выполняет JavaScript прямо на странице, никаких запросов с вашим кодом не уходит. Разметка живёт только до перезагрузки вкладки. Если фрагмент содержит закрытые ключи или внутренние ссылки, всё равно вычистите их перед вставкой — привычка полезная.

Примеры

Карточка из макета переезжает в компонент
До: Текст
После: Текст
Подпись к полю формы
До: Почта
После: Почта