Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: useeffect, cleanup, setinterval

Как корректно очищать setInterval в useEffect?

Вопрос проверяет знание механизма cleanup-функций в useEffect и умение корректно управлять побочными эффектами.

Короткий ответ

setInterval очищается через clearInterval, вызванный в функции, которую возвращает useEffect. Эта функция выполняется при размонтировании компонента и перед повторным запуском эффекта. Важно сохранить идентификатор интервала в переменную внутри эффекта. Такой подход гарантирует, что таймер не продолжит работать после ухода компонента со страницы.

Длинный ответ

React ожидает, что каждый эффект сам управляет своим жизненным циклом, включая корректное завершение.

Определение

Cleanup-функция в useEffect — это функция, возвращаемая из useEffect, которая вызывается React при размонтировании компонента или перед повторным выполнением эффекта.

Базовый шаблон очистки интервала

Перед использованием интервала обычно достаточно следующего шаблона:

useEffect(() => {
  const intervalId = window.setInterval(() => {
    // логика интервала
  }, 1000);

  return () => {
    window.clearInterval(intervalId);
  };
}, []);

Почему именно так

  1. Интервал создаётся внутри эффекта

    • React чётко понимает, к какому эффекту относится этот сайд-эффект.

  2. Очистка возвращается из того же эффекта

    • это гарантирует симметрию: что создали — то и закрыли.

  3. Зависимости эффекта контролируют пересоздание

    • при изменении зависимостей старый интервал будет очищен перед созданием нового.

Типичная ошибка

  1. Очищать интервал вне useEffect

    • React не знает, когда это делать.

  2. Забывать очистку при наличии зависимостей

    • в итоге создаётся несколько интервалов одновременно.

Вывод

Корректная очистка setInterval в useEffect — это обязательная практика при работе с таймерами и другими сайд-эффектами, иначе приложение быстро начинает вести себя нестабильно.

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • React

    React

Ключевые слова

#useeffect

#cleanup

#setinterval

Подпишись на React Developer в телеграм