> Что происходит в useEffect при передаче пустого массива, отсутствия зависимостей или конкретных зависимостей (React)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Иннотех, Альфа-банк, Консорциум кодекс, VK

Стек: React

> Пример ответа

useEffect - это хук в React, который выполняет побочные эффекты после рендера компонента. Поведение зависит от массива зависимостей:

  1. Пустой массив []: Эффект выполняется один раз после первого рендера (монтирования) и больше не запускается. Используется для инициализации, подписок или запросов, которые не должны повторяться.

  2. Отсутствие массива зависимостей: Эффект выполняется после каждого рендера (включая первый). Это может привести к бесконечному циклу, если внутри изменяется состояние, поэтому используется редко, например, для логирования.

  3. Конкретные зависимости [dep1, dep2]: Эффект выполняется после первого рендера и каждый раз, когда хотя бы одна из зависимостей изменяется. Это оптимальный способ синхронизации с данными (например, обновление списка при изменении id).

Примеры:

JAVASCRIPT
// Пустой массив - один раз
useEffect(() => { fetchData(); }, []);
// Без массива - каждый рендер
useEffect(() => { console.log('render'); });
// С зависимостями - при изменении
useEffect(() => { updateUser(id); }, [id]);

Важно: не передавай объекты или функции напрямую без стабилизации (useCallback/useMemo), иначе эффект будет срабатывать чаще из-за новых ссылок.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью