Vue中watch的詳細(xì)用法

在Vue中,使用watch來(lái)響應(yīng)數(shù)據(jù)的變化搀缠。watch的用法大致有下面三種:

1. 基本用法

下面代碼是watch的一種基本用法:

<input type="text" v-model="cityName"/>
new Vue({
  el: '#root',
  data: {
    cityName: 'shanghai'
  },
  watch: {
    cityName(newName, oldName) {
      // ...
    }
  } 
})

直接寫一個(gè)監(jiān)聽處理函數(shù),當(dāng)每次監(jiān)聽到cityName值發(fā)生改變時(shí)割疾,執(zhí)行函數(shù)侧纯。也可以在所監(jiān)聽的數(shù)據(jù)后面直接加字符串形式的方法名:

watch: {
    cityName: 'nameChange'
    }
 } 

2. immediate和handler

使用watch基本用法時(shí)有一個(gè)特點(diǎn),就是當(dāng)值第一次綁定的時(shí)候碍讨,不會(huì)執(zhí)行監(jiān)聽函數(shù)治力,只有值發(fā)生改變才會(huì)執(zhí)行。如果我們需要在最初綁定值的時(shí)候也執(zhí)行函數(shù)勃黍,則就需要用到immediate屬性宵统。

比如當(dāng)父組件向子組件動(dòng)態(tài)傳值時(shí),子組件props首次獲取到父組件傳來(lái)的默認(rèn)值時(shí)覆获,也需要執(zhí)行函數(shù)马澈,此時(shí)就需要將immediate設(shè)為true瓢省。

new Vue({
  el: '#root',
  data: {
    cityName: ''
  },
  watch: {
    cityName: {
      handler(newName, oldName) {
        // ...
      },
      immediate: true
    }
  } 
})

監(jiān)聽的數(shù)據(jù)后面寫成對(duì)象形式,包含handler方法和immediate痊班,之前我們寫的函數(shù)其實(shí)就是在寫這個(gè)handler方法勤婚。

immediate表示在watch中首次綁定的時(shí)候,是否執(zhí)行handler涤伐,值為true則表示在watch中聲明的時(shí)候馒胆,就立即執(zhí)行handler方法,值為false凝果,則和一般使用watch一樣祝迂,在數(shù)據(jù)發(fā)生變化的時(shí)候才執(zhí)行handler。

3. deep

當(dāng)需要監(jiān)聽一個(gè)對(duì)象的改變時(shí)豆村,基本的watch方法無(wú)法監(jiān)聽到對(duì)象內(nèi)部屬性的改變液兽,只有data中的數(shù)據(jù)才能夠監(jiān)聽到變化骂删,此時(shí)就需要deep屬性對(duì)對(duì)象進(jìn)行深度監(jiān)聽掌动。

watch: {
    'cityName.name': {
      handler(newName, oldName) {
      // ...
      },
      deep: true,
      immediate: true
    }
  }

這樣只會(huì)給對(duì)象的某個(gè)特定的屬性加監(jiān)聽器。數(shù)組(一維宁玫、多維)的變化不需要通過(guò)深度監(jiān)聽粗恢,對(duì)象數(shù)組中對(duì)象的屬性變化則需要deep深度監(jiān)聽。


原文:https://www.cnblogs.com/shiningly/p/9471067.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末欧瘪,一起剝皮案震驚了整個(gè)濱河市眷射,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌佛掖,老刑警劉巖妖碉,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異芥被,居然都是意外死亡欧宜,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門拴魄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)冗茸,“玉大人,你說(shuō)我怎么就攤上這事匹中∠氖” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵顶捷,是天一觀的道長(zhǎng)挂绰。 經(jīng)常有香客問(wèn)我,道長(zhǎng)服赎,這世上最難降的妖魔是什么葵蒂? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任芳室,我火速辦了婚禮,結(jié)果婚禮上刹勃,老公的妹妹穿的比我還像新娘堪侯。我一直安慰自己,他們只是感情好荔仁,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布伍宦。 她就那樣靜靜地躺著,像睡著了一般乏梁。 火紅的嫁衣襯著肌膚如雪次洼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天遇骑,我揣著相機(jī)與錄音卖毁,去河邊找鬼。 笑死落萎,一個(gè)胖子當(dāng)著我的面吹牛亥啦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播练链,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼翔脱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了媒鼓?” 一聲冷哼從身側(cè)響起届吁,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绿鸣,沒想到半個(gè)月后疚沐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡潮模,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年亮蛔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片再登。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尔邓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锉矢,到底是詐尸還是另有隱情养铸,我是刑警寧澤遗淳,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布栈虚,位于F島的核電站猛计,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜炎疆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一卡骂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧形入,春花似錦全跨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蛇数,卻和暖如春挪钓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耳舅。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工碌上, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浦徊。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓馏予,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親辑畦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吗蚌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359