У Vue 3, ref та shallowRef є частиною Composition API, який дозволяє створювати та управляти реактивними даними в компонентах. Ці дві функції використовуються для різних цілей та пропонують різні рівні реактивності:
ref
- Використання:
refвикористовується для створення реактивної посилання на примітивне значення або об'єкт. Це означає, що коли значення вrefзмінюється, Vue автоматично відстежує ці зміни та оновлює DOM відповідно. - Глибока реактивність: При використанні з об'єктами,
refзабезпечує глибоку реактивність. Це означає, що всі вкладені властивості об'єкта також стають реактивними.
shallowRef
- Використання:
shallowRefсхожий наref, але він використовується для створення реактивної посилання, яка не робить вкладені властивості реактивними. Це корисно, коли вам потрібна реактивність лише для верхнього рівня об'єкта або коли вам потрібно оптимізувати продуктивність, уникаючи глибокої реактивності. - Поверхнева реактивність:
shallowRefстворює реактивну посилання, але вкладені властивості об'єкта залишаються нереактивними. Це означає, що зміни до вкладених властивостей не призведуть до автоматичного оновлення DOM.
Основні відмінності
- Глибина реактивності: Головна відмінність між
refтаshallowRefполягає у тому, щоrefзабезпечує глибоку реактивність для об'єктів, роблячи всі вкладені властивості реактивними, тоді якshallowRefзабезпечує лише поверхневу реактивність, залишаючи вкладені властивості нереактивними. - Продуктивність: Використання
shallowRefможе підвищити продуктивність у великих об'єктах або масивах, де глибока реактивність не є необхідною, оскільки це зменшує кількість реактивних залежностей, які Vue має відстежувати.
Вибір між ref та shallowRef залежить від конкретного випадку використання та необхідної глибини реактивності.