React за один вечер

React — это библиотека интерфейсов с одной идеей: интерфейс есть функция от состояния. Компонент хранит состояние через useState, получает данные через props и перерисовывается, когда меняется то или другое. Всё остальное — хуки, контекст, роутеры — удобства вокруг этого цикла.

Не начинайте новые статические сайты на React: отрендеренные на сервере страницы или обычный HTML загружаются быстрее и ломаются реже. Берите React, когда на странице есть настоящее интерактивное состояние — редакторы, дашборды, пошаговые мастера — и используйте его вместе с Vite вместо устаревшего create-react-app.

Состояние без слёз

Локальное состояние живёт в useState, общее — в контексте, и этого хватает большинству приложений. Внешнее хранилище нужно только когда несвязанные компоненты действительно делят меняющиеся данные; проброс props через два уровня — не та проблема, для которой нужна библиотека. Когда рендер кажется медленным, профайлер (а не memo, рассыпанный повсюду) подскажет, какой компонент на самом деле перерисовывается слишком часто.

Эффекты нужны для синхронизации, а не для логики

Если эффект что-то вычисляет для рендера, ему место в теле рендера или в memo: эффекты выполняются после отрисовки и вызывают именно то мерцание, за которое ругают React. Оставьте эффекты для внешнего мира: подписки, таймеры, ручная работа с DOM. Эффекты с загрузкой данных при монтировании разрастаются в водопады; библиотека данных с кэшированием заменяет десяток из них в первый же день.

Что дальше
Vite: мгновенный dev-сервер
Vue для тех, кто знает React
Node.js