Как React понимает, что зависимости `useEffect` изменились?

React сравнивает каждую зависимость с её значением в предыдущем рендере через Object.is, а не выполняет глубокое сравнение объектов.

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

Что ответить на собеседовании

React сравнивает каждую зависимость с её значением в предыдущем рендере через Object.is, а не выполняет глубокое сравнение объектов.

Подробный разбор

Ответ с пояснениями

React сравнивает каждую зависимость с её значением в предыдущем рендере через Object.is, а не выполняет глубокое сравнение объектов.

Новый объект или функция считаются изменившимися даже при похожем содержимом; мутация прежнего объекта сохраняет ссылку и может остаться незамеченной. Массив зависимостей должен иметь постоянную форму и содержать используемые реактивные значения. Без массива effect проверяется после каждого commit, с пустым — не зависит от props/state, но cleanup и повторные dev-проверки всё равно возможны.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее