open atlas

react-patterns

Паттерны React

Ты уже умеешь писать на React — теперь освой паттерны уровня senior: композицию, архитектуру состояния, границу сервер/клиент, Suspense и антипаттерны, от которых нужно избавляться, чтобы компоненты оставались простыми по мере роста.

16 юнитов·46 уроков·~14 ч

Начать трек
00

Начни отсюда

Паттерн React — это именованное переиспользуемое решение повторяющейся задачи проектирования компонентов, и все они происходят из UI = f(state). Трек предполагает знание основ React и учит паттернам — вместе с их режимами отказа, — которые держат компоненты простыми по мере роста приложения.
01

Композиция

Компоненты соединяются композицией, а не наследованием: children и слоты инвертируют управление, и родитель поставляет содержимое, а компонент — структуру. Проброс пропсов нормален на пару уровней — тянись к большему, только когда он реально мешает.
02

Compound-компоненты

Compound-компоненты разделяют неявное состояние через приватный контекст, давая потребителю свободу раскладки, пока родитель владеет поведением. Поддерживай и управляемый, и неуправляемый режимы и применяй паттерн к переиспользуемым виджетам, а не к фиксированным одноразовым.
03

Render-props и headless

Render-props и headless-компоненты отделяют поведение от представления; кастомный хук — их современный наследник для переиспользования логики: ты получаешь состояние, обработчики и доступность, а разметку поставляешь сам.
04

Кастомные хуки

Кастомный хук именует и изолирует кусок состояния и логики для переиспользования и тестов — извлекай при реальном дублировании или ясной концепции, проектируй его зависимости и очистку как контракт и не извлекай обёртку с единственным вызовом.
05

Колокация и подъём состояния

Держи состояние так низко, как можно, и поднимай только при реальном совместном использовании; вычисляй то, что можешь, вместо хранения; а разделяемое навигационное состояние держи в URL.
06

Контекст по уму

Контекст подходит для редко меняющегося, широко читаемого состояния; дроби толстые контексты и отделяй state от dispatch, чтобы сузить радиус перерисовок; сочетай его с редьюсером для сквозного состояния с реальными переходами.
07

Внешнее состояние и сторы

Тянись к внешнему стору, только когда подъём и контекст перестают масштабироваться; используй селекторы, чтобы подписаться лишь на нужный срез (и избегай tearing), и useSyncExternalStore, чтобы безопасно подключить любой внешний источник.
08

Эффекты с дисциплиной

useEffect — для синхронизации с внешними системами, а не для реакции на состояние; большинство эффектов можно удалить (вычисляй вместо них), а каждый оставшийся обязан очищаться и избегать устаревших замыканий.
09

Производительность рендеринга

Не мемоизируй по умолчанию — сначала профилируй; memo, useMemo и useCallback помогают только как система, а стабильные уникальные ключи предотвращают и лишние рендеры, и порчу состояния.
10

Граница сервер/клиент

Серверные компоненты — по умолчанию; опускай 'use client' к интерактивным листьям, передавай через границу только сериализуемые пропсы и держи доступ к данным и секреты только на сервере.
11

Suspense и границы

Размещай Suspense близко к месту, где нужны данные, и сопровождай каждую границу границей ошибок; используй переходы и отложенные значения, чтобы UI оставался отзывчивым при тяжёлых обновлениях.
12

Формы и actions

По умолчанию — неуправляемые поля с FormData, а управляй только когда значение влияет на UI; form actions React 19 вместе с useActionState обрабатывают ожидание и ошибки, а useOptimistic делает мутации мгновенными на вид.
13

Паттерны загрузки данных

Загружай на сервере (RSC) для начальных данных и бери query-библиотеку, когда нужны клиентский кеш, дедупликация и мутации; никогда не копируй серверное состояние в клиентское и загружай независимые данные параллельно.
14

Антипаттерны React

Божественные компоненты, проброс пропсов, эффекты-зеркала вычисляемого состояния, злоупотребление контекстом и ключи-индексы — это антипаттерны React; лечи каждый подходящим паттерном, не перегибая в глобальный стор или случайные ключи.
15

Капстоун: рефакторинг React-фичи

Собери всё на запутанной React-фиче: инвентаризируй запахи паттернов, рефактори пошагово, применяя композицию, хуки, состояние и границы, и измерь, что перерисовок стало меньше, а следующее изменение стало локальным.
Следующий трек

Git: от нуля до сеньора

Начни, ни разу не запустив `git init`. Закончи, умея ветвиться, делать rebase, восстанавливать потерянную работу, переписывать историю — включая смену автора коммита — и вести рабочий процесс ветвления, на котором катит настоящая команда.