intermediate

useEffect

Синхронизируйтесь с внешними системами, управляя dependencies, cleanup и повторными запусками в Strict Mode.

Effects выполняются после отрисовки, чтобы синхронизировать React с внешними системами: подписками, таймерами, ручными DOM API или логированием. Это не место для вычисления производных данных, которые должны жить в render. Массив зависимостей задаёт, когда effect перезапускается; без него он срабатывает после каждого render.

Возвращайте функцию очистки, чтобы отписаться, сбросить таймеры или прервать запросы. В Strict Mode в разработке effect монтируется, очищается и монтируется снова, выявляя отсутствие cleanup. Асинхронная работа внутри effect должна обрабатывать гонки через abort или игнорирование устаревших ответов.

					useEffect(() => {
  const id = setInterval(tick, 1000);
  return () => clearInterval(id);
}, [tick]);
				

На интервью объясняйте концепцию на конкретном примере и называйте поведение, которое проверяют.

Типовые ошибки: скрывать поток данных, дробить компоненты чрезмерно и выполнять побочные эффекты в render.

Компромисс часто между ясностью и переиспользованием или между явными props и удобством.

Чеклист:

  • Effects синхронизируют внешний мир, а не чистые вычисления.
  • Перечисляйте все реактивные значения в зависимостях.
  • Всегда очищайте подписки и таймеры.