Если зависимость — [a], React сравнивает ссылку на объект, поэтому изменение его полей без замены ссылки не считается изменением этой зависимости.
Есть объект const a с двумя полями, и он добавлен в массив зависимостей useEffect. Мы изменяем поля этого объекта, не переопределяя сам объект. Будет ли при этом перевыполняться useEffect?
Если зависимость — [a], React сравнивает ссылку на объект, поэтому изменение его полей без замены ссылки не считается изменением этой зависимости.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Если зависимость — [a], React сравнивает ссылку на объект, поэтому изменение его полей без замены ссылки не считается изменением этой зависимости.
Более того, такая мутация сама по себе не вызывает render. Обновляйте состояние неизменяемо или перечисляйте действительно нужные примитивные зависимости. Даже при другом render эффект с прежней ссылкой a не перезапустится только из-за изменённого внутреннего поля.