vue 中 watch 是一種響應式函數,用于監聽數據屬性值的變化并執行回調函數。基本用法是 watch(property, handler),其中 property 是要監視的屬性或屬性數組,handler 是回調函數。它還可以配置選項對象,例如 immediate(立即調用)和 deep(深度監聽)。watch 適用于需要對數據屬性值的變化做出反應的情況,例如更新 ui 或異步加載數據。
Vue 中 watch 的用法
什么是 watch
watch 是 Vue 中一個響應式函數,它允許您監聽數據屬性值的變化并執行回調函數。當被監視的屬性發生改變時,回調函數會被調用,您可以在其中執行任何必要的更新或操作。
語法
<code class="js">watch(property, handler)</code>
登錄后復制
property: 要監視的屬性或屬性數組。
handler: 當屬性值改變時被調用的回調函數。它接收新值和舊值作為參數。
基本用法
要監視某個屬性,只需傳入屬性名稱和一個回調函數:
<code class="js">watch('count', (newValue, oldValue) => { // count 的新值是 newValue,舊值是 oldValue })</code>
登錄后復制
監視多個屬性
要一次監視多個屬性,可以傳遞一個屬性數組:
<code class="js">watch(['count', 'name'], (newValue, oldValue) => { // 監視的值在 newValue 中作為對象提供,鍵為屬性名 })</code>
登錄后復制
選項對象
您可以使用選項對象來配置 watch 行為:
<code class="js">watch({ count: { handler(newValue, oldValue) { // ... }, immediate: true, deep: true } })</code>
登錄后復制
immediate: 如果為 true,回調函數在被監視的屬性初始化時立即調用。
deep: 如果為 true,watch 將監視對象和數組的深度更改,而不是僅監視引用更改。
高級用法
監聽特定屬性路徑
使用點表示法可以監聽對象屬性路徑的變化:
<code class="js">watch('user.name', (newValue, oldValue) => { // ... })</code>
登錄后復制
使用 return 值
watch 回調函數可以返回一個函數或一個包含 unwatch 函數的 Promise:
函數: 當組件被銷毀時,該函數會被調用,您可以使用它來清除任何資源或取消訂閱事件。
Promise: 當 Promise 被解析時,watch 將被解除。
何時使用 watch
watch 適用于需要對數據屬性值的變化做出反應的情況,例如:
更新 UI
觸發其他計算屬性或方法
異步加載數據
表單驗證
替代方案
在某些情況下,computed properties 可能是 watch 的替代方案。但是,computed properties 是派生的,這意味著它們的值是由其他響應式屬性計算出來的。