1. Введение в React: JSX, виртуальный DOM и создание первых компонентов
Введение в React: JSX, виртуальный DOM и создание первых компонентов
Добро пожаловать в курс «React с нуля». Если вы здесь, значит, вы готовы перейти от верстки статических страниц и написания простых скриптов на jQuery или ванильном JavaScript к созданию мощных, масштабируемых веб-приложений. React — это не просто библиотека, это стандарт индустрии, который изменил подход к разработке пользовательских интерфейсов.
В этой первой статье мы разберем фундамент, на котором стоит React: компонентный подход, магию Virtual DOM и синтаксис JSX.
Что такое React и почему он так популярен?
React — это JavaScript-библиотека для создания пользовательских интерфейсов, разработанная компанией Facebook (ныне Meta). Ключевое слово здесь — библиотека. В отличие от фреймворков (как Angular), которые диктуют жесткие правила архитектуры всего приложения, React отвечает только за «View» (представление) — то, что пользователь видит на экране.
Главная идея React заключается в декларативном подходе. Вместо того чтобы вручную менять DOM-дерево (искать элементы, менять классы, добавлять атрибуты), вы описываете, как интерфейс должен выглядеть в зависимости от текущего состояния данных. React берет на себя всю грязную работу по обновлению экрана.
Компонентный подход
Представьте, что вы собираете конструктор LEGO. У вас есть кирпичики разных форм и цветов. Из маленьких кирпичиков вы собираете стену, из стен — дом, из домов — город. В React всё работает точно так же.
Весь интерфейс приложения разбивается на независимые, переиспользуемые части — компоненты. Кнопка, поле ввода, шапка сайта, карточка товара — всё это компоненты. Вы пишете код компонента один раз и используете его в любом месте приложения.
!Иерархическая структура компонентов React на примере страницы магазина
Виртуальный DOM (Virtual DOM)
Одной из главных проблем веб-разработки долгое время была производительность при работе с DOM (Document Object Model). Реальный DOM в браузере — это тяжелая структура. Когда вы меняете что-то на странице с помощью JavaScript (например, document.getElementById('app').innerHTML = ...), браузеру приходится заново пересчитывать стили, макет и перерисовывать элементы. Это медленно.
React решает эту проблему с помощью концепции Virtual DOM.
Виртуальный DOM — это легковесная копия реального DOM, хранящаяся в памяти в виде обычных JavaScript-объектов. Работа с ним происходит мгновенно, так как мы не затрагиваем браузерный API отрисовки.
Как происходит обновление (Reconciliation)
!Процесс согласования: React находит отличия и обновляет только измененные элементы
Это позволяет React-приложениям работать невероятно быстро, даже если интерфейс очень сложный.
Знакомство с JSX
Посмотрите на этот код:
Это не строка и не HTML. Это JSX (JavaScript XML) — синтаксическое расширение для JavaScript. Оно позволяет писать структуру интерфейса так, как будто это HTML, но внутри JavaScript-файла.
Браузеры не понимают JSX. Перед тем как код попадет в браузер, специальные инструменты (например, Babel) преобразуют его в обычные вызовы функций JavaScript.
Пример того, во что превращается JSX:
JSX:
Результат компиляции (то, что видит браузер):
Использовать JSX не обязательно, но это стандарт де-факто, так как он делает код читаемым и наглядным.
Создание первого компонента
В современном React компоненты — это просто JavaScript-функции. Функция должна возвращать JSX-разметку.
Давайте создадим простой компонент:
Чтобы использовать этот компонент, мы пишем его имя как HTML-тег:
Обратите внимание: названия компонентов всегда должны начинаться с заглавной буквы. Если вы напишете <welcome />, React подумает, что это обычный HTML-тег, и ничего не сработает.
Правила написания JSX
JSX очень похож на HTML, но есть несколько строгих правил, которые нужно запомнить сразу.
1. Вложенность в один родительский элемент
Функция компонента не может вернуть несколько элементов, идущих подряд. Они должны быть обернуты в один родительский тег.
Неправильно:
Правильно:
Если вы не хотите создавать лишний div в DOM-дереве, используйте Фрагмент (Fragment):
2. Закрывайте все теги
В HTML некоторые теги (например, <img>, <input>, <br>) можно не закрывать. В JSX все теги должны быть закрыты.
3. camelCase для атрибутов
Поскольку JSX — это JavaScript, некоторые слова зарезервированы. Самый частый пример — атрибут class. В JS слово class используется для создания классов, поэтому в JSX для стилей используется className.
Также атрибуты, состоящие из нескольких слов, пишутся в верблюжьем регистре (camelCase):
* class className
* onclick onClick
* tabindex tabIndex
Пример:
4. Вставка JavaScript выражений
Самая мощная часть JSX — возможность вставлять любой JavaScript-код прямо в разметку. Для этого используются фигурные скобки {}.
Внутри {} может быть переменная, функция или любое выражение, которое возвращает значение. Однако там нельзя использовать инструкции типа if, for или объявлять переменные (для условного рендеринга используется тернарный оператор, как в примере выше).
Стилизация (краткий обзор)
В React есть два основных способа добавить стили прямо в компонент:
className и подключаете обычный CSS-файл.style. Обратите внимание на двойные фигурные скобки: первые для входа в JS-режим, вторые — для самого объекта.Заключение
Мы сделали первый шаг в мир React. Теперь вы знаете, что:
* React использует компоненты как кирпичики для построения интерфейса. * Virtual DOM обеспечивает высокую производительность, обновляя только то, что действительно изменилось. * JSX позволяет писать разметку внутри JavaScript, используя привычный синтаксис, но с силой программирования.
В следующей статье мы углубимся в то, как делать компоненты «живыми» и интерактивными с помощью пропсов (props) и состояния (state).