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