Если через watch отслеживать объект, будет ли по умолчанию отслеживаться вложенность (все поля), или только первый уровень? Что нужно указать, чтобы было глубокое отслеживание (deep)?

Опция deep в watch (например, во Vue.js) используется для отслеживания изменений во вложенных объектах или массивах.

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

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

Опция deep в watch (например, во Vue.js) используется для отслеживания изменений во вложенных объектах или массивах. По умолчанию watch реагирует только на замену значения переменной, но не на изменение свойств внутри объекта.

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

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

Опция deep в watch (например, во Vue.js) используется для отслеживания изменений во вложенных объектах или массивах. По умолчанию watch реагирует только на замену значения переменной, но не на изменение свойств внутри объекта.

Когда установлен deep: true, наблюдатель рекурсивно отслеживает все вложенные свойства, и при любом изменении внутри объекта или массива срабатывает callback.

Пример:

watch(
  () => user,
  (newVal, oldVal) => {
    console.log('User data changed');
  },
  { deep: true }
);

// Если user = { name: 'Ivan', address: { city: 'Moscow' } }
// и изменится user.address.city, то watch сработает только при deep: true

Это полезно, когда нужно реагировать на любые изменения в сложных структурах данных.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку