> Как работает useEffect хук в React (React)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: ADV/web-engineering, Иннотех, Kodix, EPAM, Exness, Исходный Код
Стек: React
> Пример ответа
useEffect - это хук в React, который позволяет выполнять побочные эффекты (side effects) в функциональных компонентах. Он заменяет методы жизненного цикла классовых компонентов, такие как componentDidMount, componentDidUpdate и componentWillUnmount.
Синтаксис:
JSXuseEffect(() => {// код эффектаreturn () => {// очистка эффекта (опционально)};}, [зависимости]);
Как работает:
-
Первый аргумент - функция-эффект, которая запускается после каждого рендера, если изменились указанные зависимости.
-
Второй аргумент - массив зависимостей. React сравнивает их с предыдущими значениями (с помощью
Object.is) и перезапускает эффект только при изменениях. -
Если массив пуст (
[]), эффект выполняется один раз после монтирования (аналогcomponentDidMount). -
Если зависимости не указаны, эффект запускается после каждого рендера (что может привести к бесконечному циклу, если внутри изменяется состояние).
-
Функция очистки (возвращаемая из эффекта) вызывается перед размонтированием компонента и перед повторным запуском эффекта (аналог
componentWillUnmountи очистка предыдущего эффекта).
Примеры:
JSX// Загрузка данных при монтированииuseEffect(() => {fetch('/api/data').then(res => setData(res));}, []);// Подписка с очисткойuseEffect(() => {const subscription = source.subscribe(handleEvent);return () => subscription.unsubscribe();}, [source]);// Эффект, зависящий от пропсовuseEffect(() => {document.title = `Привет, ${name}`;}, [name]);
Важно: useEffect выполняется асинхронно после того, как браузер отрисовал изменения, чтобы не блокировать UI. Для синхронных операций (например, измерение DOM) используйте useLayoutEffect.
> Похожие задачи по frontend
Что такое batching в React и зачем он нужен
Как правильно использовать мемоизацию в React
Приходилось ли писать скрипты для работы с React
Что делает хук useEffect и как работает функция очистки в React?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью