Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Как написать React-компонент, чтобы при монтировании запускался setInterval, выводящий в консоль "Hello world" каждые 10 секунд? Что важно учесть при такой реализации с setInterval?

Вопрос проверяет знание работы с таймерами в React и очистки эффектов.

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

useEffect(() => {
  const intervalId = setInterval(() => {
    console.log('Hello world');
  }, 10000);
  return () => clearInterval(intervalId); // Очистка при размонтировании
}, []);

Важно:

  1. Очистка в return — иначе интервал будет работать после удаления компонента.

  2. Пустой массив зависимостей [] — чтобы эффект выполнился только при монтировании.

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

Правильная реализация:

import { useEffect } from 'react';

const TimerComponent = () => {
  useEffect(() => {
    const intervalId = setInterval(() => {
      console.log('Hello world');
    }, 10000);

    return () => {
      clearInterval(intervalId); // Остановка при размонтировании
    };
  }, []); // Пустой массив = только при монтировании

  return <div>Check console!</div>;
};

Ошибки и нюансы:

  1. Без очистки → Утечка памяти, если компонент удаляется.

  2. Зависимости в [] — если добавить переменные, эффект будет перезапускаться при их изменении.

  3. Использование useState внутри интервала:

    const [count, setCount] = useState(0);
    useEffect(() => {
      const id = setInterval(() => {
        setCount(count + 1); // Будет всегда использовать начальное значение `count`!
      }, 1000);
      return () => clearInterval(id);
    }, []); // Неправильно!

    Решение:

    setCount(prev => prev + 1); // Использовать функциональную форму

Вывод: Всегда очищайте таймеры и учитывайте замыкания!

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • React

    React

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

#useeffect

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