vue中watch的詳細用法

2021-10-07 17:33:15 字數 1352 閱讀 6063

在vue中,使用watch來響應資料的變化。watch的用法大致有三種。下面**是watch的一種簡單的用法:

"text" v-model=

"cityname"/>

new vue(

, watch: }}

)

直接寫乙個監聽處理函式,當每次監聽到 cityname 值發生改變時,執行函式。也可以在所監聽的資料後面直接加字串形式的方法名:

watch: 

}

immediate和handler

這樣使用watch時有乙個特點,就是當值第一次繫結的時候,不會執行監聽函式,只有值發生改變才會執行。如果我們需要在最初繫結值的時候也執行函式,則就需要用到immediate屬性。

比如當父元件向子元件動態傳值時,子元件props首次獲取到父元件傳來的預設值時,也需要執行函式,此時就需要將immediate設為true。

new vue(

, watch: ,

immediate: true}}

})

監聽的資料後面寫成物件形式,包含handler方法和immediate,之前我們寫的函式其實就是在寫這個handler方法;

immediate表示在watch中首次繫結的時候,是否執行handler,值為true則表示在watch中宣告的時候,就立即執行handler方法,值為false,則和一般使用watch一樣,在資料發生變化的時候才執行handler。

deep

當需要監聽乙個物件的改變時,普通的watch方法無法監聽到物件內部屬性的改變,只有data中的資料才能夠監聽到變化,此時就需要deep屬性對物件進行深度監聽。

"text" v-model=

"cityname.name"/>

new vue(

}, watch: ,

deep: true,

immediate: true}}

})

設定deep: true 則可以監聽到cityname.name的變化,此時會給cityname的所有屬性都加上這個***,當物件屬性較多時,每個屬性值的變化都會執行handler。如果只需要監聽物件中的乙個屬性值,則可以做以下優化:使用字串的形式監聽物件屬性:

watch: ,

deep: true,

immediate: true

}}

這樣只會給物件的某個特定的屬性加***。

陣列(一維、多維)的變化不需要通過深度監聽,物件陣列中物件的屬性變化則需要deep深度監聽。

vue中watch的詳細用法

在vue中,使用watch來響應資料的變化。watch的用法大致有三種。下面 是watch的一種簡單的用法 new vue watch 直接寫乙個監聽處理函式,當每次監聽到 cityname 值發生改變時,執行函式。也可以在所監聽的資料後面直接加字串形式的方法名 watch 這樣使用watch時有乙...

vue中watch的詳細用法

在vue中,使用watch來響應資料的變化。watch的用法大致有三種。下面 是watch的一種簡單的用法 new vue watch 直接寫乙個監聽處理函式,當每次監聽到 cityname 值發生改變時,執行函式。也可以在所監聽的資料後面直接加字串形式的方法名 watch immediate和ha...

vue中watch的詳細用法

在vue中,使用watch來響應資料的變化。watch的用法大致有三種。下面 是watch的一種簡單的用法 new vue watch 直接寫乙個監聽處理函式,當每次監聽到 cityname 值發生改變時,執行函式。也可以在所監聽的資料後面直接加字串形式的方法名 watch 這樣使用watch時有乙...