Vue的Watch API提供了一種監視數據變化的方式。Vue實例的數據變量是響應式的,所以當變量的值改變后就會自動更新DOM。但有時我們需要在數據改變后執行一些邏輯,這就是Watch的作用。
watch: {
foo: function(newValue, oldValue) {
// do something
}
}
在Vue中,我們可以在watch選項中添加一個對象,用來監聽數據的變化。這個對象的屬性名是需要監聽的數據變量名,而屬性值是一個回調函數。當監聽的變量的值改變時,這個回調函數就會被調用。
watch: {
foo: {
handler: function(newValue, oldValue) {
// do something
},
immediate: true,
deep: true
}
}
除了簡單的回調函數之外,watch選項還支持更多的配置項。其中immediate選項可以讓回調函數在組件渲染時立即執行一次。而deep選項可以讓Vue更深地觀察數據的變化。
watch: {
'foo.bar': function(newValue, oldValue) {
// do something
}
}
watch選項不僅可以監聽簡單的數據變量,還可以監聽復雜的數據結構。在上面的例子中,我們監聽了foo對象的bar屬性的變化。注意,這里的字符串表達式需要用單引號包裹。
watch: {
'foo': {
handler: 'onFooChange'
}
},
methods: {
onFooChange: function(newValue, oldValue) {
// do something
}
}
除了傳遞一個回調函數,我們還可以傳遞一個方法名,讓Vue實例調用對應的方法。
watch: {
'foo': [
function(newValue, oldValue) {
// do something
},
function(newValue, oldValue) {
// do something else
}
]
}
watch選項還支持數組的形式,可以傳遞多個回調函數或方法名。當變量的值改變時,這些函數或方法會依次被調用。
總之,Watch API是Vue提供的一種非常有用的監視數據變化的方式。通過它,我們可以在數據變化后執行一些邏輯,從而更好地控制組件的行為。
上一篇vue watch的理解
下一篇vue 字段類型轉換