В чем разница между JSX и HTML?
Основы HTML
JSX выглядит как HTML, но это синтаксис JavaScript: каждый тег компилируется в вызов функции (React.createElement или jsx()).
Главные отличия
- Атрибуты в camelCase и по именам DOM-свойств:
classNameвместоclass,htmlForвместоfor,onClickвместоonclick,tabIndex. - Выражения в фигурных скобках:
{user.name},{items.map(...)}. - `style` — объект:
style={{ marginTop: 8 }}. - Все теги закрываются:
<img />,<br />. - Один корневой элемент — или фрагмент
<>…</>. - Обработчики — функции, а не строки:
onClick={handleClick}. - Безопасность: строки в
{}экранируются, поэтому вставить HTML случайно нельзя.
<label htmlFor="email" className="label">
Email: {user.email}
</label>Коротко для собеседования
JSX — синтаксис JavaScript, похожий на HTML: атрибуты в camelCase (className, htmlFor), выражения в {}, style объектом, все теги закрыты, строки экранируются.
Подробнее: React — Writing Markup with JSX