Vue中計算屬性computed的示例解讀
計算屬性
表達(dá)式是非常便利的,但是它們實際上只用于簡單的運算。在模板中放入太多的邏輯會讓模板過重且難以維護(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方法即使返回一個隨機數(shù),reversedMessage的值也不會變。
示例代碼
computed相當(dāng)于屬性的一個實時計算,如果實時計算里關(guān)聯(lián)了對象,那么當(dāng)對象的某個值改變的時候,同事會出發(fā)實時計算。
比如:
<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: '小強',
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-cli?npm如何解決vue項目中缺失core-js的問題
這篇文章主要介紹了vue-cli?npm如何解決vue項目中缺失core-js的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
vue2中如何更改el-dialog出場動畫(el-dialog彈窗組件)
el-dialog是一個十分好用的彈窗組件,但是出場動畫比較單調(diào),于是決定自定義一個出場動畫,本文通過實例代碼圖文相結(jié)合給大家敘述下實現(xiàn)思路,感興趣的朋友一起看看吧2022-06-06
關(guān)于Vue源碼vm.$watch()內(nèi)部原理詳解
這篇文章主要介紹了關(guān)于Vue源碼vm.$watch()內(nèi)部原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
詳解vue-router 2.0 常用基礎(chǔ)知識點之router-link
這篇文章主要介紹了詳解vue-router 2.0 常用基礎(chǔ)知識點之router-link,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05

