vue.js 中的 watch 選項允許開發(fā)者監(jiān)聽特定數(shù)據(jù)的變化。當數(shù)據(jù)發(fā)生變化時,watch 會觸發(fā)一個回調函數(shù),用于執(zhí)行更新視圖或其他任務。其配置選項包括 immediate,用于指定是否立即執(zhí)行回調,以及 deep,用于指定是否遞歸監(jiān)聽對象或數(shù)組的更改。
Vue.js 中使用 watch
在 Vue.js 中,watch 選項允許開發(fā)者監(jiān)聽特定數(shù)據(jù)的變化。一旦數(shù)據(jù)發(fā)生變化,watch 就會觸發(fā)一個回調函數(shù),該函數(shù)可以執(zhí)行更新視圖或執(zhí)行其他操作等任務。
使用語法
watch: {
// 要監(jiān)聽的數(shù)據(jù)屬性
propertyName: {
// 回調函數(shù)
handler(newValue, oldValue) {
// 在數(shù)據(jù)發(fā)生更改時運行的代碼
},
// 可選:配置項
immediate: true | false, // 立即執(zhí)行回調
deep: true | false // 深度監(jiān)聽對象或數(shù)組
}
}
登錄后復制
使用示例
export default {
data() {
return {
count: 0
}
},
watch: {
// 監(jiān)聽 count 屬性
count: {
handler(newValue, oldValue) {
console.log(`count 發(fā)生變化:${oldValue} -> ${newValue}`)
},
// 立即執(zhí)行回調
immediate: true
}
}
}
登錄后復制
在這個示例中,count 屬性被監(jiān)聽。當 count 發(fā)生變化時,handler 函數(shù)會被調用,它會記錄 count 值的變化。由于 immediate 設置為 true,回調函數(shù)會在組件首次渲染時立即執(zhí)行。
配置選項
watch 選項提供了幾個配置選項,用于自定義其行為:
immediate: 指定是否在組件初始化時立即執(zhí)行回調函數(shù)。
deep: 指定是否遞歸監(jiān)聽對象或數(shù)組的更改。如果設置為 true,則數(shù)組或對象中的嵌套屬性的變化也會觸發(fā)回調函數(shù)。
注意:
避免在 watch 回調函數(shù)中重新設置同一數(shù)據(jù)屬性,這會導致陷入無限循環(huán)。
如果監(jiān)聽的對象或數(shù)組較大,請考慮使用 deep 選項,以避免性能問題。
如果您只關心初始值,可以使用 created 鉤子函數(shù)。






