Computed VS Watch

計算屬性

計算屬性是基于它們的響應(yīng)式依賴進行緩存的。只在相關(guān)響應(yīng)式依賴發(fā)生改變時它們才會重新求值。

緩存的重要性:當我們有一個性能開銷很大的計算屬性A時,他需要遍歷一個巨大的數(shù)組并做大量計算。當有其他計算屬性也依賴A時炭庙,如果不緩存A,我們將不可避免的多次執(zhí)行 A 的 getter方法煌寇,這樣十分耗費性能焕蹄。

計算屬性默認只有 getter,不過在需要時你也可以提供一個 setter

var vm = new Vue({
  el: '#demo',
  data: {
    firstName: 'Foo',
    lastName: 'Bar'
  },
  computed: {
    fullName: {
      get:function () {
        return this.firstName + ' ' + this.lastName
      }
      // setter
      set: function (newValue) {
         var names = newValue.split(' ')
         this.firstName = names[0]
         this.lastName = names[names.length - 1]
      }
    }
  }
})

偵聽器

當需要在數(shù)據(jù)變化時執(zhí)行異步或開銷較大的操作時阀溶,watch偵聽器是最有用的腻脏。當值第一次綁定的時候,不會執(zhí)行監(jiān)聽函數(shù)银锻,只有值發(fā)生改變才會執(zhí)行永品。

watch: {
    city:{
        //如果我們需要在最初綁定值的時候也執(zhí)行函數(shù),則就需要用到immediate屬性
        immediate: true,
        //普通的watch方法無法監(jiān)聽到對象內(nèi)部屬性的改變击纬,只有data中的數(shù)據(jù)才能夠監(jiān)聽到變化鼎姐,此時就需要deep屬性對對象進行深度監(jiān)聽
        deep: true,
        handler(newVal, oldVal) {
            // do somethings
        },
    },
    // 當對象屬性較多時,每個屬性值的變化都會執(zhí)行handler更振。如果只需要監(jiān)聽對象中的一個屬性值炕桨,則可以做以下優(yōu)化:使用字符串的形式監(jiān)聽對象屬性
    'city.name': {
        handler(newName, oldName) {
            // ...
        },
    }
}

計算屬性 vs 偵聽器

  • watch:一個值變化了,我要做那些事肯腕,適合一個值影響多個值的情景献宫。

  • computed:一個值由其他的值得來的,這些值變了我也要變实撒,適合多個值影響一個值的場景姊途。

  • 計算屬性有緩存性涉瘾,計算所得的值沒有變化不會重復(fù)執(zhí)行,監(jiān)聽器提供更通用的方法捷兰,適合執(zhí)行異步操作或者開銷大的情況立叛。

  • 一個數(shù)據(jù)需要經(jīng)過復(fù)雜計算就用 computed。一個數(shù)據(jù)需要被監(jiān)聽并且對數(shù)據(jù)做一些操作就使用 watch寂殉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末囚巴,一起剝皮案震驚了整個濱河市原在,隨后出現(xiàn)的幾起案子友扰,更是在濱河造成了極大的恐慌,老刑警劉巖庶柿,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件村怪,死亡現(xiàn)場離奇詭異,居然都是意外死亡浮庐,警方通過查閱死者的電腦和手機甚负,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來审残,“玉大人梭域,你說我怎么就攤上這事〗两危” “怎么了病涨?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長璧坟。 經(jīng)常有香客問我既穆,道長,這世上最難降的妖魔是什么雀鹃? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任幻工,我火速辦了婚禮,結(jié)果婚禮上黎茎,老公的妹妹穿的比我還像新娘囊颅。我一直安慰自己,他們只是感情好傅瞻,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布踢代。 她就那樣靜靜地躺著,像睡著了一般俭正。 火紅的嫁衣襯著肌膚如雪奸鬓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天掸读,我揣著相機與錄音串远,去河邊找鬼宏多。 笑死,一個胖子當著我的面吹牛澡罚,可吹牛的內(nèi)容都是我干的伸但。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼留搔,長吁一口氣:“原來是場噩夢啊……” “哼更胖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起隔显,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤却妨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后括眠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彪标,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年掷豺,在試婚紗的時候發(fā)現(xiàn)自己被綠了捞烟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡当船,死狀恐怖题画,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情德频,我是刑警寧澤苍息,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站抱婉,受9級特大地震影響档叔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蒸绩,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一衙四、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧患亿,春花似錦传蹈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咙冗,卻和暖如春沾歪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雾消。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工灾搏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挫望,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓狂窑,卻偏偏與公主長得像媳板,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子泉哈,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348