Sobes.tech
Назад к вопросам
Senior
4

Когда срабатывает callback useEffect? Какие фазы есть в React?

Компании, где спрашивали
Type

Ответ от нейросети

sobes.tech AI

useEffect срабатывает после того, как React отрендерил компонент и обновил DOM. Это значит, что callback внутри useEffect выполняется после фазы «commit» (фиксации изменений в DOM).

Фазы в React:

  1. Render phase (фаза рендера) — React вычисляет, что нужно отрендерить, создаёт виртуальный DOM. Здесь нельзя вызывать побочные эффекты.
  2. Commit phase (фаза фиксации) — React применяет изменения к реальному DOM и запускает эффекты.

useEffect запускается после commit phase, что позволяет безопасно выполнять побочные эффекты, например, запросы к API, подписки, манипуляции с DOM.

Пример использования useEffect:

import React, { useEffect, useState } from 'react';

function Example({ userId }) {
  const [userData, setUserData] = useState(null);

  useEffect(() => {
    fetch(`/api/users/${userId}`)
      .then(res => res.json())
      .then(data => setUserData(data));
  }, [userId]); // эффект срабатывает при изменении userId

  return <div>{userData ? userData.name : 'Загрузка...'}</div>;
}

Здесь эффект сработает после рендера и обновит состояние, что вызовет повторный рендер с новыми данными.