У 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
залежить від конкретного випадку використання та необхідної глибини реактивності.