Вопрос проверяет понимание работы хука useEffect и важности указания массива зависимостей для предотвращения нежелательных побочных эффектов и бесконечных циклов.
Когда вы используете хук useEffect без второго аргумента (массива зависимостей), эффект будет запускаться после каждого рендера компонента. Это означает, что при любом изменении состояния или пропсов, которое вызывает повторный рендер, эффект выполнится снова.
Если внутри такого эффекта вы изменяете состояние (например, через setState), это вызовет новый рендер, который снова запустит эффект, и так до бесконечности. Это приводит к зависанию браузера или ошибкам.
import React, { useState, useEffect } from 'react';
function Counter() {
const [count, setCount] = useState(0);
// Без зависимостей — бесконечный цикл
useEffect(() => {
setCount(count + 1);
});
return <div>{count}</div>;
}В этом примере каждый рендер увеличивает count, что вызывает новый рендер и снова запускает эффект.
[] — эффект выполняется только при монтировании и размонтировании.[count] — эффект выполняется только при изменении этих переменных.Всегда указывайте массив зависимостей в useEffect, чтобы контролировать, когда должен выполняться побочный эффект. Это предотвращает неожиданное поведение и улучшает производительность приложения.
Уровень
Рейтинг:
5
Сложность:
3
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию