1. Что такое React и как он устроен
Что такое React и как он устроен
React — это JavaScript-библиотека для создания пользовательских интерфейсов (UI). Её ключевая идея: описывать интерфейс как набор компонентов, каждый из которых отвечает за небольшой фрагмент страницы и может переиспользоваться.
Зачем React
React помогает:
Компонентная модель
Компонент — это функция (чаще всего), которая получает входные данные и возвращает описание того, что должно быть отображено.
Мысленно интерфейс можно представить деревом:
Такое дерево удобно развивать: вы улучшаете одну ветку, почти не затрагивая остальные.
JSX: «шаблоны», которые на самом деле JavaScript
В React часто используют JSX — синтаксис, похожий на HTML, но это не HTML. JSX — это удобная запись вызовов функций React, которая компилируется в JavaScript.
Важно помнить:
{...}.className вместо class).Как React обновляет экран: Virtual DOM и reconciler
Браузерная страница представлена DOM-деревом. Напрямую менять DOM вручную на больших страницах сложно: легко забыть обновить какой-то элемент, и появляются ошибки состояния UI.
React делает иначе:
Смысл: вы описываете «как должно выглядеть», а React решает «что именно изменить в браузере».
Props и State: входные данные и внутреннее состояние
В React есть два основных источника данных:
Типичный поток данных: родитель хранит состояние → передает дочерним через props → дочерние вызывают обработчик (функцию) → родитель обновляет state → UI пересчитывается.
Хуки (Hooks): как компонент «подключается» к возможностям React
В функциональных компонентах React использует хуки — специальные функции, позволяющие:
useState).useEffect).useContext) и др.Правило, которое стоит запомнить сразу: хуки вызывают на верхнем уровне компонента, не внутри if, циклов и вложенных функций. Это нужно, чтобы React стабильно понимал порядок хуков между рендерами.
Рендер и эффекты: что происходит «когда данные изменились»
Упрощённая модель работы:
useEffect).Полезная мысль: рендер — это расчёт, а не обязательно «перерисовка всего на экране». Перерисовывается только то, что реально изменилось.
Списки и ключи: как React понимает, что именно изменилось
Когда вы отображаете список элементов, React важно знать, какой элемент «тот же самый» между рендерами. Для этого используется key.
key должен быть уникальным среди соседних элементов списка.id).key часто приводит к визуальным и логическим ошибкам при вставках/удалениях.Композиция вместо наследования
В React принято собирать интерфейс через композицию:
children.Это обычно проще и гибче, чем иерархии наследования, привычные по ООП.
---
Задания для закрепления
key важен в списках? Что может пойти не так, если использовать индекс массива как key?<details> <summary> Ответы </summary>
UserCard получает name и avatarUrl. State — внутренние данные компонента, которые меняются со временем. Пример: isModalOpen внутри компонента модального окна.useEffect).key помогает React сопоставлять элементы списка между рендерами. Если поставить индекс как key, то при вставке/удалении в середине списка элементы «переедут», и React может неправильно сохранить состояние элементов (например, текст в инпуте окажется в другой строке).</details>