Урок 12

Итоги курса

Курс о состоянии и контексте в React.

Что ты узнал

  • Состояние — данные, меняющиеся во времени
  • Подъём состояния — в ближайшего общего родителя
  • Композиция — альтернатива подъёму через children
  • Контекст — передача данных без prop drilling
  • Провайдер и потребитель — паттерн контекста
  • Мемоизация контекста — через useMemo
  • useSyncExternalStore — подписка на внешние источники
  • useReducer + контекст — минимальный стор
  • Серверное состояние — TanStack Query
  • Паттерны — один источник истины, статусы вместо флагов
  • Отладка — DevTools, Profiler, логирование

Как выбрать подход

Локальный стейт — данные нужны одному компоненту.

Подъём — данные нужны соседям, есть общий родитель.

Композиция — родитель не должен знать о структуре данных.

Контекст — данные нужны глубоко в дереве, меняются редко.

useReducer + контекст — сложная логика обновления, без сторонних библиотек.

Zustand/Redux — глобальное состояние, селекторы, devtools.

TanStack Query/SWR — серверные данные.

Частые ошибки

  • Хранить производное состояние
  • Мутировать стейт
  • Создавать объект в контексте без мемоизации
  • Класть в контекст часто меняющиеся данные
  • Использовать контекст вместо пропсов
  • Держать серверные данные в своём сторе

Что дальше

  • Изучи TanStack Query подробнее
  • Попробуй Zustand в небольшом проекте
  • Разберись с useSyncExternalStore
  • Практикуй паттерны на реальных задачах
  • Читай код библиотек: Zustand, Jotai

Полезные ссылки

  • React docs: react.dev
  • TanStack Query: tanstack.com/query
  • Zustand: github.com/pmndrs/zustand
  • Redux Toolkit: redux-toolkit.js.org
  • SWR: swr.vercel.app

Заключение

Состояние — одна из сложнейших тем React. Здесь нет единственно правильного решения: каждое приложение требует своего баланса между локальным стейтом, контекстом и стором. Главное — начинать с простого и усложнять только при необходимости.