1. Основы React и JSX
Основы React и JSX
Почему миллионы разработчиков выбрали React для создания интерфейсов, хотя чистый JavaScript тоже умеет рисовать кнопки и формы? Ответ прост: React убирает рутину ручного обновления страницы и позволяет думать о пользовательском интерфейсе как о наборе переиспользуемых деталей конструктора. Если вы уверенно пишете на HTML, CSS и JavaScript, но никогда не трогали React — эта статья переведёт вас от теории к первому работающему коду за 15 минут.
Что такое React на самом деле
React — это JavaScript-библиотека для построения пользовательских интерфейсов. Не фреймворк, не платформа, а именно библиотека: она решает одну задачу — отрисовку UI и его обновление при изменении данных. Всё остальное (роутинг, работа с сервером, управление формами) вы подключаете отдельно по мере необходимости.
Ключевая идея React — декларативный подход. Вы описываете, как должен выглядеть интерфейс при определённых данных, а React сам разбирается, как обновить страницу. Сравните два подхода:
| Императивный (чистый JS) | Декларативный (React) | |---|---| | Найди элемент по id | Опиши, что должно отобразиться | | Измени его текстовое содержимое | React сам обновит DOM | | Удали старый класс, добавь новый | Просто укажи нужные данные |
Представьте навигатор: императивный подход — это пошаговая инструкция «поверни направо, проедь 200 метров, поверни налево». Декларативный — вы просто указываете пункт назначения, а навигатор строит маршрут сам.
Установка окружения
Перед написанием кода нужно подготовить инструменты. Понадобятся три вещи:
Проверьте установку в терминале:
Если обе команды вернули номера версий — окружение готово.
Создание первого проекта
Самый быстрый способ получить работающий React-проект — утилита Create React App. Она настраивает Webpack, Babel, dev-сервер и прочее, чтобы вы могли сразу писать код.
После выполнения команд браузер автоматически откроет страницу по адресу http://localhost:3000. Вы увидите вращающийся логотип React — это значит, что приложение работает.
Структура созданного проекта выглядит так:
Всё, что касается пользовательского интерфейса, живёт в папке src/. Файлы в public/ трогать на первых порах не нужно.
JSX — HTML внутри JavaScript
Откройте файл src/App.js. Вы увидите код, который выглядит как HTML, но находится внутри JavaScript-функции:
Это JSX — синтаксическое расширение JavaScript, которое позволяет писать HTML-подобную разметку прямо внутри JS-кода. JSX не является обязательным, но на практике его используют в 99% React-проектов.
Правила JSX
JSX похож на HTML, но имеет несколько важных отличий:
Один корневой элемент. Функция компонента должна возвращать один общий контейнер. Если нужно вернуть несколько элементов, оберните их в <div> или пустой тег <>...</> (это React.Fragment):
Атрибуты на JavaScript-манер. В JSX зарезервированные слова JavaScript заменяются аналогами:
class → classNamefor → htmlFortabindex → tabIndexЭто потому, что JSX транслируется в вызовы React.createElement(), а class в JavaScript — ключевое слово.
Вставка выражений через фигурные скобки. Внутри {} можно размещать любые JavaScript-выражения: переменные, вызовы функций, арифметические операции:
Обратите внимание: внутри {} можно писать только выражения (то, что возвращает значение). Инструкции вроде if, for напрямую в JSX не работают — их нужно выносить за пределы return или заменять тернарным оператором.
JSX под капотом
Когда вы пишете <h1>Привет</h1>, компилятор Babel превращает это в вызов:
Знание этого факта помогает понять, почему JSX имеет именно такие ограничения. Но на практике вам не нужно писать createElement вручную — JSX делает код читаемым и компактным.
Первое изменение: сделаем код своим
Замените содержимое App.js на следующее:
Сохраните файл — браузер обновится автоматически благодаря hot reload (горячей перезагрузке). Вы увидите заголовок и список технологий.
Обратите внимание на атрибут key внутри map. React использует его, чтобы отслеживать элементы списка при обновлении. Без key при изменении данных React будет перерисовывать весь список целиком вместо точечного обновления. На данном этапе достаточно передать index, но в реальных проектах лучше использовать уникальные идентификаторы.
Как React обновляет страницу
Когда вы сохраняете файл, React не перезагружает всю страницу. Вместо этого он использует виртуальный DOM — облегчённую копию реального DOM в памяти. Вот что происходит при изменении данных:
Этот процесс называется reconciliation. Благодаря ему React обновляет страницу быстро, даже если интерфейс состоит из сотен элементов.
Сборка для продакшена
Когда приложение готово к публикации, выполните:
React создаст папку build/ с оптимизированными файлами: минифицированный JavaScript, сжатый CSS, подготовленный HTML. Эти файлы можно загрузить на любой хостинг.
Типичные ошибки начинающих
export default — без экспорта компонент недоступен другим файлам.class вместо className — браузер не упадёт, но в консоли появится предупреждение.{userName} выведется буквально, а не значение переменной.Теперь у вас есть работающее React-приложение, вы понимаете, что такое JSX и как он работает. В следующей статье мы разберём, как разбивать интерфейс на компоненты и передавать данные между ними через пропсы.