Vue學(xué)習(xí)的第四天

計(jì)算屬性和觀察者


計(jì)算屬性基礎(chǔ)例子

你可以像綁定普通屬性一樣在模板中綁定計(jì)算屬性掰派。Vue 知道?vm.reversedMessage?依賴于?vm.message功炮,因此當(dāng)?vm.message?發(fā)生改變時(shí)汉买,所有依賴?vm.reversedMessage的綁定也會更新。而且最妙的是我們已經(jīng)以聲明的方式創(chuàng)建了這種依賴關(guān)系:計(jì)算屬性的 getter 函數(shù)是沒有副作用 (side effect) 的歌径,這使它更易于測試和理解陕赃。

<div id="example">

? ? <p>{{message}}</p>

? ? <p>{{reversedMessage}}</p>

</div>

var vm = new Vue({

? ? el:"#example",

? ? data:{

? ? ? ? message:"Hello"

? ? },

? ? computed:{

? ? ? ? reversedMessage:function(){

? ? ? ? ? ? return this.message.split('').reverse().join('')

? ? ? ? }

? ? }

? ? methods: {

? ? ? ? ? ? reversedMessage: function () {

? ? ? ? ? ? ? ? ?return this.message.split('').reverse().join('')

? ? ? ? ? ? } }

})

我們可以將同一函數(shù)定義為一個(gè)方法而不是一個(gè)計(jì)算屬性。兩種方式的最終結(jié)果確實(shí)是完全相同的瓜挽。然而盹廷,不同的是計(jì)算屬性是基于它們的依賴進(jìn)行緩存的。計(jì)算屬性只有在它的相關(guān)依賴發(fā)生改變時(shí)才會重新求值久橙。這就意味著只要?message?還沒有發(fā)生改變俄占,多次訪問?reversedMessage?計(jì)算屬性會立即返回之前的計(jì)算結(jié)果,而不必再次執(zhí)行函數(shù)淆衷。

我們?yōu)槭裁葱枰彺娓组考僭O(shè)我們有一個(gè)性能開銷比較大的的計(jì)算屬性?A,它需要遍歷一個(gè)巨大的數(shù)組并做大量的計(jì)算祝拯。然后我們可能有其他的計(jì)算屬性依賴于?A?甚带。如果沒有緩存,我們將不可避免的多次執(zhí)行?A?的 getter鹿驼!如果你不希望有緩存欲低,請用方法來替代。

#計(jì)算屬性vs偵聽屬性

Vue提供了一種更通用的方式來觀察和響應(yīng)Vue實(shí)例上的數(shù)據(jù)變動:偵聽屬性.當(dāng)有些數(shù)據(jù)需要隨著其他數(shù)據(jù)變動而變動時(shí),別濫用watch,更好的做法是使用計(jì)算屬性而不是命令式的watch回調(diào).

<div id="demo">{{fullName}}</div>

var vm = new Vue({

? ? ?el:"#demo",

? ? ?data:{

? ? ? ? ? firstName:"Foo",

? ? ? ? ? lastName:"Bar",

? ? ? ? ? fullName:"Foo Bar"

? ? },

? ? watch:{

? ? ? ? ? firstName:function(val){

? ? ? ? ? ? ? ? this.fullName = val + '' + this.lastName

? ? ? ? ?},

? ? ? ? lastName:function(val){

? ? ? ? ? ? ? ? this.fullName = this.firstName + '' + val

? ? ? ? }

? ? ?}

})

//與計(jì)算屬性的版本進(jìn)行比較

var vm = new Vue({

? ? ?el:"#demo",

? ? ?data:{

? ? ? ? ? ?firstName:"Foo",

? ? ? ? ? lastName:"Bar"

? ? },

? ? computed:{

? ? ? ? ?fullName:function(){

? ? ? ? ? ? ? ?return this.firstName + "" + this.lastName

}

}

})

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末畜晰,一起剝皮案震驚了整個(gè)濱河市砾莱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凄鼻,老刑警劉巖腊瑟,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聚假,死亡現(xiàn)場離奇詭異闰非,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)财松,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門瘪贱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辆毡,“玉大人,你說我怎么就攤上這事舶掖∏蜃颍” “怎么了眨攘?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鲫售。 經(jīng)常有香客問我共螺,道長,這世上最難降的妖魔是什么龟虎? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任璃谨,我火速辦了婚禮,結(jié)果婚禮上鲤妥,老公的妹妹穿的比我還像新娘佳吞。我一直安慰自己,他們只是感情好棉安,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布底扳。 她就那樣靜靜地躺著,像睡著了一般贡耽。 火紅的嫁衣襯著肌膚如雪衷模。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天蒲赂,我揣著相機(jī)與錄音阱冶,去河邊找鬼。 笑死滥嘴,一個(gè)胖子當(dāng)著我的面吹牛木蹬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播若皱,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼镊叁,長吁一口氣:“原來是場噩夢啊……” “哼尘颓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晦譬,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤疤苹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后敛腌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卧土,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年像樊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了夸溶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凶硅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扫皱,到底是詐尸還是另有隱情足绅,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布韩脑,位于F島的核電站氢妈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏段多。R本人自食惡果不足惜首量,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望进苍。 院中可真熱鬧加缘,春花似錦、人聲如沸觉啊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杠人。三九已至,卻和暖如春辑莫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背各吨。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工绅你, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伺帘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓伪嫁,卻偏偏與公主長得像偶垮,于是被迫代替她去往敵國和親张咳。 傳聞我的和親對象是個(gè)殘疾皇子脚猾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容