vue里methods watch和compute的區(qū)別和聯(lián)系

methods,watch和computed都是以函數(shù)為基礎(chǔ)的,但各自卻都不同。

一、作用機(jī)制上

1.watch和computed都是以Vue的依賴追蹤機(jī)制為基礎(chǔ)的,它們都試圖處理這樣一件事情:當(dāng)某一個數(shù)據(jù)(稱它為依賴數(shù)據(jù))發(fā)生變化的時候,所有依賴這個數(shù)據(jù)的“相關(guān)”數(shù)據(jù)“自動”發(fā)生變化,也就是自動調(diào)用相關(guān)的函數(shù)去實現(xiàn)數(shù)據(jù)的變動。

2.對methods:methods里面是用來定義函數(shù)的,很顯然,它需要手動調(diào)用才能執(zhí)行。而不像watch和computed那樣,“自動執(zhí)行”預(yù)先定義的函數(shù)。

二、從性質(zhì)上

1.methods里面定義的是函數(shù),你顯然需要像"fuc()"這樣去調(diào)用它(假設(shè)函數(shù)為fuc)。

2.computed計算屬性,事實上和和data對象里的數(shù)據(jù)屬性是同一類的(使用上)。

3.watch:類似于監(jiān)聽機(jī)制+事件機(jī)制。

例如:

watch: {

?? firstName: function(val) {this.fullName = val +this.lastName }

}

firstName的改變是這個特殊“事件”被觸發(fā)的條件,而firstName對應(yīng)的函數(shù)就相當(dāng)于監(jiān)聽到事件發(fā)生后執(zhí)行的方法

三、watch和computed的對比

首先它們都是以Vue的依賴追蹤機(jī)制為基礎(chǔ)的,它們的共同點是:都是希望在依賴數(shù)據(jù)發(fā)生改變的時候,被依賴的數(shù)據(jù)根據(jù)預(yù)先定義好的函數(shù),發(fā)生“自動”的變化。我們當(dāng)然可以自己寫代碼完成這一切,但卻很可能造成寫法混亂,代碼冗余的情況。

但watch和computed也有明顯不同的地方:

watch和computed各自處理的數(shù)據(jù)關(guān)系場景不同

1.watch擅長處理的場景:一個數(shù)據(jù)影響多個數(shù)據(jù)

2.computed擅長處理的場景:一個數(shù)據(jù)受多個數(shù)據(jù)影響

相比于watch/computed,methods不處理數(shù)據(jù)邏輯關(guān)系,只提供可調(diào)用的函數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、computed 和 methods computed是計算屬性,methods是方法,都可以實現(xiàn)對 data...
    許小花花閱讀 15,633評論 0 10
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,279評論 2 89
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,621評論 1 32
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,168評論 0 29
  • 午休又難受,每次到了下午就回嗓子不舒服,昨天跑步4公里后,嗓子里堵的難受,很多次中午、晚上難受直接跑醫(yī)院,但是結(jié)果...
    lxtiger閱讀 163評論 0 0

友情鏈接更多精彩內(nèi)容