日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺談vue.watch的觸發(fā)條件是什么

瀏覽:75日期:2022-11-04 17:27:50

很多人習(xí)慣用watch,但是卻很少有人知道watch的真正觸發(fā)條件。如果不是對(duì)vue原理了如指掌,請(qǐng)謹(jǐn)慎使用watch。

示例1,下面會(huì)觸發(fā)watch 嗎?

<script> new Vue({ data() { return { city: {id: 1, name: ’Beijing’} } }, watch: { city() { console.log(’city changed’) } }, created() { this.city = {id: 1, name: ’Beijing’} } })</script>

會(huì)觸發(fā),因?yàn)樵赾reated方法里面重新給city賦值了一個(gè)對(duì)象,city前后的指向不同了

示例2:

<script> new Vue({ data() { return { city: {id: 1, name: ’Beijing’} } }, watch: { city() { console.log(’city changed’) } }, created() { this.city.name = ’Shanghai’ } })</script>

不會(huì)觸發(fā), 因?yàn)閏reated方法執(zhí)行之后, city的指向沒(méi)有變

如果我們期望捕獲這種更新,應(yīng)該這樣寫(xiě)代碼:

watch: { city: { handler: () => console.log(’city changed’), deep: true }}

將選項(xiàng)deep設(shè)為true能讓vue捕獲對(duì)象內(nèi)部的變化。

下面討論一下watch一個(gè)數(shù)組:

<script>new Vue({ el: ’#body’, data() { return { cities: [’Beijing’, ’Tianjin’] } }, watch: { cities() { console.log(’cities changed’) } }})</script>

那下面哪些操作會(huì)觸發(fā)cities的watch回調(diào)呢?

this.cities = [’Beijing’, ’Tianjin’]this.cities.push(’Xiamen’)this.cities = this.cities.slice(0, 1)this.cities.pop();this.cities.sort((a,b)=>a.localeCompare(b));this.cities[0] = ’Shenzhen’this.cities.splice(0, 1)this.cities.length = 0

答案是只有最后三行不會(huì)觸發(fā)。

補(bǔ)充知識(shí):vue 深度watch與watch立即觸發(fā)回調(diào)

基礎(chǔ)用法

搜索框輸入搜索關(guān)鍵字的時(shí)候,可以自動(dòng)觸發(fā)搜索,此時(shí)除了監(jiān)聽(tīng)搜索框的change事件之外,我們也可以通過(guò)watch監(jiān)聽(tīng)搜索關(guān)鍵字的變化。

<template> <div> <span>搜索</span> <input v-model='searchVal' /> </div></template><script>export default { data() { return { searchVal: ’’ } }, watch: { // 在值發(fā)生變化之后,重新加載數(shù)據(jù) searchVal(newValue, oldValue) { if (newValue !== oldValue) { this.loadData() } } }, methods: { loadData() { // 重新加載數(shù)據(jù),此處需要通過(guò)函數(shù)防抖 } }}</script>

立即觸發(fā)

通過(guò)上面的代碼,現(xiàn)在已經(jīng)可以在值發(fā)生變化的時(shí)候觸發(fā)加載數(shù)據(jù)了,但是如果要在頁(yè)面初始化時(shí)候加載數(shù)據(jù),我們還需要在created或者mounted生命周期鉤子里面再次調(diào)用loadData方法。不過(guò),現(xiàn)在可以不用這樣寫(xiě)了,通過(guò)配置watch的立即觸發(fā)屬性,就可以滿足了。

export default { watch: { // 在值發(fā)生變化之后,重新加載數(shù)據(jù) searchValue: { // 通過(guò)handler來(lái)監(jiān)聽(tīng)屬性變化, 初次調(diào)用 newValue為''空字符串, oldValue為 undefined handler(newValue, oldValue) { if (newValue !== oldValue) { this.loadData() } }, // 配置立即執(zhí)行屬性 immediate: true } }}

深度監(jiān)聽(tīng)

一個(gè)表單頁(yè)面,需求希望用戶在修改表單的任意一項(xiàng)之后,表單頁(yè)面就需要變更為被修改狀態(tài)。如果按照上例中watch的寫(xiě)法,那么我們就需要去監(jiān)聽(tīng)表單每一個(gè)屬性,太麻煩了,這時(shí)候就需要用到watch的深度監(jiān)聽(tīng)deep

export default { data() { return { formData: { name: ’’, sex: ’’, age: 0, deptId: ’’ } } }, watch: { // 在值發(fā)生變化之后,重新加載數(shù)據(jù) formData: { // 需要注意,因?yàn)閷?duì)象引用的原因, newValue和oldValue的值一直相等 handler(newValue, oldValue) { // 在這里標(biāo)記頁(yè)面編輯狀態(tài) }, // 通過(guò)指定deep屬性為true, watch會(huì)監(jiān)聽(tīng)對(duì)象里面每一個(gè)值的變化 deep: true } }}

隨時(shí)監(jiān)聽(tīng),隨時(shí)取消,了解一下$watch

有這樣一個(gè)需求,有一個(gè)表單,在編輯的時(shí)候需要監(jiān)聽(tīng)表單的變化,如果發(fā)生變化則保存按鈕啟用,否則保存按鈕禁用。

這時(shí)候?qū)τ谛略霰韱蝸?lái)說(shuō),可以直接通過(guò)watch去監(jiān)聽(tīng)表單數(shù)據(jù)(假設(shè)是formData),如上例所述,但對(duì)于編輯表單來(lái)說(shuō),表單需要回填數(shù)據(jù),這時(shí)候會(huì)修改formData的值,會(huì)觸發(fā)watch,無(wú)法準(zhǔn)確的判斷是否啟用保存按鈕。現(xiàn)在你就需要了解一下$watch

export default { data() { return { formData: { name: ’’, age: 0 } } }, created() { this.$_loadData() }, methods: { // 模擬異步請(qǐng)求數(shù)據(jù) $_loadData() { setTimeout(() => { // 先賦值 this.formData = { name: ’子君’, age: 18 } // 等表單數(shù)據(jù)回填之后,監(jiān)聽(tīng)數(shù)據(jù)是否發(fā)生變化 const unwatch = this.$watch( ’formData’, () => { console.log(’數(shù)據(jù)發(fā)生了變化’) }, { deep: true } ) // 模擬數(shù)據(jù)發(fā)生了變化 setTimeout(() => { this.formData.name = ’張三’ }, 1000) }, 1000) } }}

根據(jù)上例可以看到,我們可以在需要的時(shí)候通過(guò)this.$watch來(lái)監(jiān)聽(tīng)數(shù)據(jù)變化。那么如何取消監(jiān)聽(tīng)呢,上例中this.$watch返回了一個(gè)值unwatch,是一個(gè)函數(shù),在需要取消的時(shí)候,執(zhí)行 unwatch()即可取消

以上這篇淺談vue.watch的觸發(fā)條件是什么就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人免费电影网址| 肉色欧美久久久久久久免费看 | 一区二区三区四区日本视频| 国产精品成人3p一区二区三区| 中文精品在线| 中文不卡在线| 亚洲精品进入| 国产精品麻豆成人av电影艾秋| 欧美天堂一区二区| 精品一区二区三区视频在线播放| 日本精品黄色| 免费不卡中文字幕在线| 国产精品人人爽人人做我的可爱 | 日韩毛片视频| 日韩不卡在线| 日韩视频中文| 97久久超碰| 麻豆视频久久| 国产精品一区二区中文字幕| 国产日韩欧美三区| 日韩av免费大片| 亚洲激情国产| 日本成人手机在线| 精品成人18| 香蕉久久国产| 久久99蜜桃| 黄色成人91| 国产精品资源| 亚洲香蕉网站| 日韩一区二区三区四区五区| 国精品产品一区| 一区在线视频观看| 国产精品久久免费视频| 精品久久99| 蜜桃一区二区三区在线观看| 免费视频一区二区三区在线观看| 久久久精品日韩| 欧美一区91| 日韩国产综合| 欧美精品影院| 国产综合激情| 久久精品国产久精国产爱| 激情婷婷综合| 久久中文字幕一区二区| 91久久国产| 久久亚洲黄色| 免费视频最近日韩| 热三久草你在线| 中文亚洲免费| 精品一区电影| 亚洲精品少妇| 亚洲精品一区二区妖精| 国产精品一区二区三区四区在线观看| 日韩精品久久久久久久电影99爱| 中文字幕av一区二区三区人| 91偷拍一区二区三区精品| 日精品一区二区三区| 99久久视频| 精品美女久久| 欧美欧美黄在线二区| 日韩一级欧洲| 国产超碰精品| 日本精品一区二区三区在线观看视频 | 国产激情综合| 亚洲精品伊人| 中文无码日韩欧| 午夜欧美精品| 桃色一区二区| 国产精品麻豆久久| 欧美成人一二区| 欧美视频二区| 欧美亚洲自偷自偷| 天堂久久av| 视频一区欧美精品| 亚洲va中文在线播放免费| 国产一区二区亚洲| 日本亚州欧洲精品不卡| 国产视频亚洲| 99精品在线免费在线观看| av中文资源在线资源免费观看| 国产精品亚洲人成在99www| 日韩不卡在线观看日韩不卡视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 香蕉国产精品| 激情综合激情| 欧美精品一区二区三区精品| 久久精品123| 韩国精品主播一区二区在线观看| av资源中文在线| 国产一二在线播放| 日韩av片子| 国产成人精品三级高清久久91| 国产精品videossex久久发布 | 日韩一区精品视频| 一级成人国产| 日韩精品亚洲一区二区三区免费| 亚洲精品韩国| 日韩av中文字幕一区二区三区| 日韩国产欧美在线播放| 91亚洲精品视频在线观看| 日韩av一级片| 国产精品xxxav免费视频| 欧美黄色一区二区| **爰片久久毛片| 国产精品a久久久久| 精品久久精品| 久久久久国产精品一区二区| 激情91久久| 亚洲精品自拍| 国产亚洲欧美日韩精品一区二区三区 | 欧美www视频在线观看| 粉嫩av一区二区三区四区五区| 高清av不卡| 91国语精品自产拍| 日本电影久久久| 精品亚洲二区| 久久在线免费| 亚洲一级淫片| 久久只有精品| 蜜臀国产一区| 久久国产精品99国产| 亚洲精品观看| 精品五月天堂| 天堂资源在线亚洲| 五月亚洲婷婷 | 蜜桃久久久久久| 日本精品在线播放| 色爱综合网欧美| 欧美日韩国产探花| 日韩成人av影视| 国产精品99一区二区三| 激情综合网站| 欧美日韩18| 天堂资源在线亚洲| 亚洲v天堂v手机在线| 麻豆一区二区三区| 国模 一区 二区 三区| 日本va欧美va瓶| 国产不卡人人| 综合视频一区| 日韩精品一卡| 欧美视频久久| 免费视频亚洲| 欧美视频精品全部免费观看| 四虎国产精品免费观看| 日韩中文字幕区一区有砖一区 | 日韩欧美一区二区三区在线视频 | 欧美激情久久久久久久久久久| av中文字幕在线观看第一页| 国产综合精品| 免费在线亚洲| 日韩制服丝袜av| 亚洲精品成人图区| 日韩三级久久| 91成人超碰| 国产精品伦理久久久久久| 久久先锋影音| 亚洲成人一区在线观看| 日韩高清在线不卡| 美女网站一区| 国产+成+人+亚洲欧洲在线| 天堂久久av| 亚洲精品123区| 中文字幕色婷婷在线视频| 美国三级日本三级久久99 | 日本va欧美va精品| 99在线精品免费视频九九视| 国产a亚洲精品| 日本少妇精品亚洲第一区| 欧美午夜不卡| 日韩一区欧美| 国产精品视频一区二区三区四蜜臂 | 综合亚洲自拍| 在线综合欧美| 一区二区三区四区日本视频| 欧美在线看片| 亚洲图片久久| 91精品1区| 视频福利一区| 黄色欧美在线| 欧美视频精品全部免费观看| 国产一区二区高清| 91精品综合| 91视频一区| 欧美激情91| 国产精品视频3p| 日本一区中文字幕| 蜜臀av一区二区三区| 亚洲精品电影| 波多视频一区| 岛国av免费在线观看| 美女视频网站久久| 国产欧美精品久久| 国产图片一区| 欧美精品影院| 国产精品一区二区三区美女| 欧美亚洲网站| 国产欧美丝祙| 欧美视频精品全部免费观看| 日韩手机在线|