Vue中計算屬性computed的示例解讀
計算屬性
表達(dá)式是非常便利的,但是它們實(shí)際上只用于簡單的運(yùn)算。在模板中放入太多的邏輯會讓模板過重且難以維護(hù),所以引入了計算屬性computed,將復(fù)雜的邏輯放入計算中進(jìn)行處理,同時computed有緩存功能,防止復(fù)雜計算邏輯多次調(diào)用引起的性能問題。
computed原理
computed的屬性reversedMessage在data中會有一個對我們不可見的cacheReversedMessage屬性對應(yīng)
cacheReversedMessage的值是根據(jù)其綁定的data中的message來決定的 獲取reversedMessage會返回
cacheReversedMessage的值 message更新之后會立馬調(diào)用reversedMessage的get方法去給cacheReversedMessage賦值(無論reversedMessage在dom中是否使用) cacheReversedMessage的值發(fā)生變化時,相應(yīng)的dom也會發(fā)生變化
注意:computed中的屬性和data中的屬性名字不能相同,一個屬性要么在data里;要么在computed里,computed里的屬性要跟data中的配合使用,當(dāng)data屬性發(fā)生變化時才會調(diào)用get方法更新reversedMessage的值,否則get方法即使返回一個隨機(jī)數(shù),reversedMessage的值也不會變。
示例代碼
computed相當(dāng)于屬性的一個實(shí)時計算,如果實(shí)時計算里關(guān)聯(lián)了對象,那么當(dāng)對象的某個值改變的時候,同事會出發(fā)實(shí)時計算。
比如:
<body id="content"> <parent :childrens="childrens"></parent> </body> <!-- 這個測試主要想證明: 對于計算屬性里如果關(guān)聯(lián)對象,即使對象不是組件作用域內(nèi)的,當(dāng)對象在外部改變了某個屬性,同樣會出發(fā)計算屬性的方法--> <script> var parent = Vue.extend( { props: { childrens: '' }, template: '<div >{{age}}</div>', data: function() { return { name: '', age: 18 }; }, computed: { age: function() { return this.childrens.age +10; } }, created: function() { var _parent = this.$parent; this._set = {}; this._set = _parent; } } ); var vm = new Vue( { el: 'body', data: { childrens: { name: '小強(qiáng)', age: 20, sex: '男' } }, components: { 'parent': parent } } ); vm.$data.childrens.age = 10; </script>
當(dāng)vm.$data.childrens.age
這個值改變的時候,動態(tài)觸發(fā)computed里的age屬性計算,最后顯示到頁面的結(jié)果是:20。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
vue項(xiàng)目實(shí)現(xiàn)便捷接入百度地圖API
部分項(xiàng)目需要地圖的嵌入,這篇文章主要介紹了vue項(xiàng)目中調(diào)用百度地圖API使用方法,其他的地圖調(diào)用與之類似,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-04-04VueJs監(jiān)聽window.resize方法示例
本篇文章主要介紹了VueJs監(jiān)聽window.resize方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01Vue項(xiàng)目優(yōu)化的一些實(shí)戰(zhàn)策略
代碼優(yōu)化不僅僅局限在業(yè)務(wù)邏輯這塊,像是代碼復(fù)用、效率等等都是我們可以加以改進(jìn)的地方,這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目優(yōu)化的一些實(shí)戰(zhàn)策略,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05解決Element-ui radio單選框label布爾/數(shù)值的一個坑
這篇文章主要介紹了解決Element-ui radio單選框label布爾/數(shù)值的一個坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04vue3中關(guān)于i18n字符串轉(zhuǎn)義問題
這篇文章主要介紹了vue3中關(guān)于i18n字符串轉(zhuǎn)義問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04