Vue2 Watch監(jiān)聽(tīng)操作方法
在Vue2中,我們可以使用watch來(lái)監(jiān)聽(tīng)一個(gè)數(shù)據(jù)的變化,并且在數(shù)據(jù)變化時(shí)執(zhí)行一些操作。這個(gè)特性是Vue2非常強(qiáng)大的一個(gè)功能,可以幫助我們監(jiān)控一個(gè)或多個(gè)數(shù)據(jù)的變化,然后做出相應(yīng)的反應(yīng)。
watch語(yǔ)法
要使用watch,我們需要在Vue組件的選項(xiàng)中聲明一個(gè)watch對(duì)象,如下:
export default {
data() {
return {
count: 0
}
},
watch: {
count(newCount, oldCount) {
console.log(`count變成了${newCount},之前是${oldCount}`)
}
}
}watch對(duì)象的每個(gè)屬性都是一個(gè)鍵值對(duì),其中鍵表示要監(jiān)聽(tīng)的數(shù)據(jù)的名稱(chēng),而值則是一個(gè)函數(shù)。這個(gè)函數(shù)的參數(shù)包含兩個(gè)值:新值和舊值,在數(shù)據(jù)發(fā)生變化時(shí)被觸發(fā)。
實(shí)時(shí)響應(yīng)
watch監(jiān)聽(tīng)器能夠很好地與Vue的響應(yīng)式系統(tǒng)融合,使得我們?cè)跀?shù)據(jù)發(fā)生變化時(shí)可以及時(shí)地進(jìn)行響應(yīng)。例如,當(dāng)用戶(hù)輸入一些文本時(shí),我們可以通過(guò)watch來(lái)監(jiān)聽(tīng)輸入框的value,然后在用戶(hù)輸入時(shí)實(shí)時(shí)更新一些狀態(tài):
<input v-model="inputValue" />
export default {
data() {
return {
inputValue: ''
}
},
watch: {
inputValue(newValue, oldValue) {
console.log(`輸入框的值從${oldValue}變?yōu)榱?{newValue}`)
}
}
}深度監(jiān)聽(tīng)
在Vue2中,我們可以通過(guò)prop對(duì)象中的deep屬性來(lái)進(jìn)行深度監(jiān)聽(tīng)。這個(gè)屬性默認(rèn)為false,表示不進(jìn)行深度監(jiān)聽(tīng)。如果我們需要監(jiān)聽(tīng)對(duì)象或數(shù)組中的變化,那么就需要將這個(gè)屬性設(shè)置為true。
示例:
export default {
props: {
obj: {
type: Object,
default: () => ({})
}
},
watch: {
obj: {
deep: true,
handler(newObj, oldObj) {
console.log('obj發(fā)生了變化')
}
}
}
}取消watch監(jiān)聽(tīng)
在開(kāi)發(fā)過(guò)程中,有時(shí)我們需要取消watch監(jiān)聽(tīng)器。我們可以使用$watch方法來(lái)手動(dòng)添加watch監(jiān)聽(tīng)器,并且可以從組件實(shí)例中移除它。這個(gè)方法的第一個(gè)參數(shù)是要監(jiān)聽(tīng)的數(shù)據(jù)的名稱(chēng),而第二個(gè)參數(shù)則表示要執(zhí)行的回調(diào)函數(shù)。
示例:
export default {
data() {
return {
count: 0
}
},
created() {
this.stopWatch = this.$watch('count', (newCount, oldCount) => {
console.log(`count變成了${newCount},之前是${oldCount}`)
})
},
methods: {
stopWatching() {
this.stopWatch()
}
}
}在上面的示例中,我們?cè)诮M件創(chuàng)建時(shí)通過(guò)$watch方法添加了一個(gè)watch監(jiān)聽(tīng)器,并將它保存到了stopWatch變量中。當(dāng)我們需要取消這個(gè)監(jiān)聽(tīng)器時(shí),我們只需要調(diào)用這個(gè)變量即可。
總結(jié)
通過(guò)watch監(jiān)聽(tīng)器,我們可以實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)的變化,并且在數(shù)據(jù)發(fā)生改變時(shí)進(jìn)行相應(yīng)的操作。我們還可以使用$watch方法手動(dòng)添加監(jiān)聽(tīng)器,以及從組件實(shí)例中移除它。這是Vue2非常強(qiáng)大的一個(gè)功能,可以幫助我們更好地管理和維護(hù)數(shù)據(jù)。
到此這篇關(guān)于Vue2 Watch監(jiān)聽(tīng)的文章就介紹到這了,更多相關(guān)Vue2 Watch監(jiān)聽(tīng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Vue3中watch監(jiān)聽(tīng)器及源碼學(xué)習(xí)
- Vue中用watch一次監(jiān)聽(tīng)多個(gè)值變化的示例詳解
- Vue3.0監(jiān)聽(tīng)器watch與watchEffect詳解
- 詳解Vue2?watch監(jiān)聽(tīng)props的值
- vue watch監(jiān)聽(tīng)變量值的實(shí)時(shí)變動(dòng)示例詳解
- vue中watch監(jiān)聽(tīng)路由傳來(lái)的參數(shù)變化問(wèn)題
- vue watch監(jiān)聽(tīng)數(shù)據(jù)變化的案例詳解
- Vue3中watch無(wú)法監(jiān)聽(tīng)的解決辦法
- Vue3?Watch踩坑實(shí)戰(zhàn)之watch監(jiān)聽(tīng)無(wú)效
- vue3中watch監(jiān)聽(tīng)的四種寫(xiě)法
相關(guān)文章
uniapp+vue3實(shí)現(xiàn)自定義封裝支付密碼組件
本文介紹使用Vue3語(yǔ)法在uniapp中自定義封裝支付密碼組件,通過(guò)父組件與子組件的交互實(shí)現(xiàn)密碼輸入功能,并附效果圖展示,感興趣的朋友跟隨小編一起看看吧2025-08-08
簡(jiǎn)單了解Vue computed屬性及watch區(qū)別
這篇文章主要介紹了通過(guò)實(shí)例解析Vue computed屬性及watch區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Vue中使用js制作進(jìn)度條式數(shù)據(jù)對(duì)比動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Vue中使用js制作進(jìn)度條式數(shù)據(jù)對(duì)比動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
vue采用EventBus實(shí)現(xiàn)跨組件通信及注意事項(xiàng)小結(jié)
EventBus是一種發(fā)布/訂閱事件設(shè)計(jì)模式的實(shí)踐。這篇文章主要介紹了vue采用EventBus實(shí)現(xiàn)跨組件通信及注意事項(xiàng),需要的朋友可以參考下2018-06-06
vue項(xiàng)目中如何通過(guò)cdn引入資源并配置詳解
生產(chǎn)環(huán)境中將項(xiàng)目依賴(lài)的一些第三方包替換成通過(guò)cdn方式外部加載,而不是打包到 vender,對(duì)于提升應(yīng)用的加載、響應(yīng)速度很有意義,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目中如何通過(guò)cdn引入資源并配置的相關(guān)資料,需要的朋友可以參考下2022-06-06
vue制作點(diǎn)擊切換圖片效果的詳細(xì)思路與步驟
這篇文章主要給大家介紹了關(guān)于vue制作點(diǎn)擊切換圖片效果的詳細(xì)思路與步驟,圖片切換是一個(gè)很經(jīng)典的Vue入門(mén)學(xué)習(xí)案例,在你學(xué)習(xí)完一些基本的v-指令后,你可以嘗試去寫(xiě)一個(gè)簡(jiǎn)單的demo去鞏固和熟悉這些指令的使用方法,需要的朋友可以參考下2023-11-11
解決vue 使用axios.all()方法發(fā)起多個(gè)請(qǐng)求控制臺(tái)報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了解決vue 使用axios.all()方法發(fā)起多個(gè)請(qǐng)求控制臺(tái)報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
如何優(yōu)雅地在vue中添加權(quán)限控制示例詳解
這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅地在vue中添加權(quán)限控制的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03

