Вступить в клуб →
средняявопросReact и управление состоянием

Эффект отправляет запрос бесконечно

function UsersPage({ role }) {
  const [users, setUsers] = useState([]);

  const filters = { role, onlyActive: true };

  useEffect(() => {
    fetchUsers(filters).then(setUsers);
  }, [filters]);

  // ...
}

В панели сети видно, что запросы к списку пользователей уходят непрерывно, пока открыта страница. Почему?

  • Объект фильтров создаётся заново каждый рендер; зависимости сравниваются по ссылке, эффект стреляет снова — и цикл замыкается.
  • Запрос не отменяется при размонтировании, и React самостоятельно повторяет незавершённые эффекты до получения стабильного ответа.
  • Нужно передать пустой массив зависимостей: объекты в зависимостях недопустимы в принципе.
  • Причина в передаче функции обновления состояния по ссылке — из-за этого эффект перезапускается.

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела