> В чем разница shallowRef и ref во Vue (Vue.js)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: The Tribe, ЛОЦИЯ, Библио-Глобус
Стек: Vue.js
> Пример ответа
Основное различие между ref и shallowRef в Vue 3 заключается в глубине реактивности.
-
refсоздает глубокую реактивность. При передаче объекта, Vue рекурсивно оборачивает все его вложенные свойства вProxy, делая изменения на любом уровне вложенности отслеживаемыми. Это удобно, но может быть затратно для больших или глубоких структур данных. -
shallowRefсоздает поверхностную реактивность. Реактивным становится только само значение (через.value), а внутренняя структура объекта остается обычной, не реактивной. Изменения вложенных полей не вызовут обновления компонента, если только не заменить весь объект целиком.
Пример:
JAVASCRIPTimport { ref, shallowRef } from 'vue'const deep = ref({ user: { name: 'Alice' } })const shallow = shallowRef({ user: { name: 'Bob' } })// Глубокое изменение - сработает для refdeep.value.user.name = 'Charlie' // компонент обновится// Глубокое изменение - НЕ сработает для shallowRefshallow.value.user.name = 'Dave' // компонент НЕ обновится// Замена всего объекта - сработает для обоихshallow.value = { user: { name: 'Eve' } } // компонент обновится
Когда использовать:
-
ref- для большинства случаев, особенно с простыми данными или когда нужна полная реактивность. -
shallowRef- для оптимизации производительности с большими объектами (например, данные с сервера, которые меняются целиком), или когда вы сами управляете обновлениями через замену значения.
> Похожие задачи по frontend
Как реализована реактивность во Vue 2 и Vue 3 и в чем их отличия
Что такое Composition API во Vue и в чем разница с Options API
В чем разница отрисовки HTML страницы в браузере и работы с фреймворком Vue
Почему Vue удобен для разбивки кода на компоненты и переиспользования по сравнению с чистым JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью