Vue中computed和watch的區(qū)別

我們在 Vue 項目中多多少少都會有用到 computed 和 watch蓖柔,這兩個看似都能實現(xiàn)對數(shù)據(jù)的監(jiān)聽绿映,但還是有區(qū)別磨取。所以以下通過一個小栗子來理解一下這兩者的區(qū)別淹禾。

戳我查看官網(wǎng)

計算屬性computed :

  1. 支持緩存殿如,只有依賴數(shù)據(jù)發(fā)生改變贡珊,才會重新進行計算
  2. 不支持異步,當computed內(nèi)有異步操作時無效涉馁,無法監(jiān)聽數(shù)據(jù)的變化
    3.computed 屬性值會默認走緩存门岔,計算屬性是基于它們的響應式依賴進行緩存的,也就是基于data中聲明過或者父組件傳遞的props中的數(shù)據(jù)通過計算得到的值
  3. 如果一個屬性是由其他屬性計算而來的烤送,這個屬性依賴其他屬性寒随,是一個多對一或者一對一,一般用computed
    5.如果computed屬性屬性值是函數(shù),那么默認會走get方法妻往;函數(shù)的返回值就是屬性的屬性值互艾;在computed中的,屬性都有一個get和一個set方法蒲讯,當數(shù)據(jù)變化時忘朝,調(diào)用set方法。

偵聽屬性watch:

  1. 不支持緩存判帮,數(shù)據(jù)變局嘁,直接會觸發(fā)相應的操作;
    2.watch支持異步晦墙;
    3.監(jiān)聽的函數(shù)接收兩個參數(shù)悦昵,第一個參數(shù)是最新的值;第二個參數(shù)是輸入之前的值晌畅;
  2. 當一個屬性發(fā)生變化時但指,需要執(zhí)行對應的操作;一對多抗楔;
  3. 監(jiān)聽數(shù)據(jù)必須是data中聲明過或者父組件傳遞過來的props中的數(shù)據(jù)棋凳,當數(shù)據(jù)變化時,觸發(fā)其他操作连躏,函數(shù)有兩個參數(shù)剩岳,
      immediate:組件加載立即觸發(fā)回調(diào)函數(shù)執(zhí)行,
      deep: 深度監(jiān)聽入热,為了發(fā)現(xiàn)對象內(nèi)部值的變化拍棕,復雜類型的數(shù)據(jù)時使用,例如數(shù)組中的對象內(nèi)容的改變勺良,注意監(jiān)聽數(shù)組的變動不需要這么做绰播。注意:deep無法監(jiān)聽到數(shù)組的變動和對象的新增,參考vue數(shù)組變異,只有以響應式的方式觸發(fā)才會被監(jiān)聽到尚困。

總結(jié)

  watch和computed都是以Vue的依賴追蹤機制為基礎(chǔ)的蠢箩,當某一個依賴型數(shù)據(jù)(依賴型數(shù)據(jù):簡單理解即放在 data 等對象下的實例數(shù)據(jù))發(fā)生變化的時候,所有依賴這個數(shù)據(jù)的相關(guān)數(shù)據(jù)會自動發(fā)生變化尾组,即自動調(diào)用相關(guān)的函數(shù)忙芒,來實現(xiàn)數(shù)據(jù)的變動。

  當依賴的值變化時讳侨,在watch中,是可以做一些復雜的操作的奏属,而computed中的依賴跨跨,僅僅是一個值依賴于另一個值,是值上的依賴。

應用場景:

computed:用于處理復雜的邏輯運算勇婴;一個數(shù)據(jù)受一個或多個數(shù)據(jù)影響忱嘹;用來處理watch和methods無法處理的,或處理起來不方便的情況耕渴。例如處理模板中的復雜表達式拘悦、購物車里面的商品數(shù)量和總金額之間的變化關(guān)系等。

watch:用來處理當一個屬性發(fā)生變化時橱脸,需要執(zhí)行某些具體的業(yè)務邏輯操作础米,或要在數(shù)據(jù)變化時執(zhí)行異步或開銷較大的操作;一個數(shù)據(jù)改變影響多個數(shù)據(jù)添诉。例如用來監(jiān)控路由屁桑、inpurt 輸入框值的特殊處理等。

區(qū)別:

computed

  • 初始化顯示或者相關(guān)的 data栏赴、props 等屬性數(shù)據(jù)發(fā)生變化的時候調(diào)用蘑斧;

  • 計算屬性不在 data 中,它是基于data 或 props 中的數(shù)據(jù)通過計算得到的一個新值须眷,這個新值根據(jù)已知值的變化而變化竖瘾;

  • 在 computed 屬性對象中定義計算屬性的方法,和取data對象里的數(shù)據(jù)屬性一樣花颗,以屬性訪問的形式調(diào)用捕传;

  • 如果 computed 屬性值是函數(shù),那么默認會走 get 方法捎稚,必須要有一個返回值乐横,函數(shù)的返回值就是屬性的屬性值;

  • computed 屬性值默認會緩存計算結(jié)果今野,在重復的調(diào)用中葡公,只要依賴數(shù)據(jù)不變,直接取緩存中的計算結(jié)果条霜,只有依賴型數(shù)據(jù)發(fā)生改變催什,computed 才會重新計算;

  • 在computed中的宰睡,屬性都有一個 get 和一個 set 方法蒲凶,當數(shù)據(jù)變化時,調(diào)用 set 方法拆内。

watch

  • 主要用來監(jiān)聽某些特定數(shù)據(jù)的變化旋圆,從而進行某些具體的業(yè)務邏輯操作,可以看作是 computed 和 methods 的結(jié)合體麸恍;

  • 可以監(jiān)聽的數(shù)據(jù)來源:data灵巧,props搀矫,computed內(nèi)的數(shù)據(jù);

  • watch支持異步刻肄;

  • 不支持緩存瓤球,監(jiān)聽的數(shù)據(jù)改變,直接會觸發(fā)相應的操作敏弃;

  • 監(jiān)聽函數(shù)有兩個參數(shù)卦羡,第一個參數(shù)是最新的值,第二個參數(shù)是輸入之前的值麦到,順序一定是新值绿饵,舊值。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隅要,一起剝皮案震驚了整個濱河市蝴罪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌步清,老刑警劉巖要门,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異廓啊,居然都是意外死亡欢搜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門谴轮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來第步,“玉大人,你說我怎么就攤上這事粘都±疲” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵翩隧,是天一觀的道長。 經(jīng)常有香客問我堆生,道長专缠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任涝婉,我火速辦了婚禮嘁圈,結(jié)果婚禮上省骂,老公的妹妹穿的比我還像新娘蟀淮。我一直安慰自己最住,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布怠惶。 她就那樣靜靜地躺著涨缚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪策治。 梳的紋絲不亂的頭發(fā)上脓魏,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音通惫,去河邊找鬼茂翔。 笑死,一個胖子當著我的面吹牛履腋,可吹牛的內(nèi)容都是我干的珊燎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼遵湖,長吁一口氣:“原來是場噩夢啊……” “哼悔政!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起延旧,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤谋国,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后迁沫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芦瘾,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年集畅,在試婚紗的時候發(fā)現(xiàn)自己被綠了近弟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡牡整,死狀恐怖藐吮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逃贝,我是刑警寧澤谣辞,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站沐扳,受9級特大地震影響泥从,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沪摄,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一躯嫉、第九天 我趴在偏房一處隱蔽的房頂上張望纱烘。 院中可真熱鬧,春花似錦祈餐、人聲如沸擂啥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哺壶。三九已至,卻和暖如春蜒谤,著一層夾襖步出監(jiān)牢的瞬間山宾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工鳍徽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留资锰,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓阶祭,卻偏偏與公主長得像绷杜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胖翰,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345