Vue computed計(jì)算屬性的使用方法
computed
computed:相當(dāng)于method,返回function內(nèi)return的值賦值在html的DOM上。但是多個(gè){{}}使用了computed,computed內(nèi)的function也只執(zhí)行一次。僅當(dāng)function內(nèi)涉及到Vue實(shí)例綁定的data的值的改變,function才會(huì)從新執(zhí)行,并修改DOM上的內(nèi)容。
computed和method的對(duì)比
<div id="example">
{{ message.split('').reverse().join('') }}
</div>
這個(gè)是vue官網(wǎng)一直拿來(lái)作為例子的代碼。在{{}}可以很方便的放入單個(gè)表達(dá)式,但是當(dāng)一個(gè)HTML的DOM里面存在太多的表達(dá)式,程序會(huì)變得很笨重難于維護(hù)。
html
<div id="app9">
9、method與computed的區(qū)別<br/>
fullName<br/>
{{fullName}}<br/>
fullName2<br/>
{{fullName}}<br/>
fullNameMethod<br/>
{{getFullName()}}<br/>
fullNameMethod2<br/>
{{getFullName()}}<br/>
</div>
js
var app9 = new Vue({
el: '#app9',
data: {
firstName: 'Foo',
lastName: 'Bar'
},
methods:{
getFullName:function () {
console.log("執(zhí)行了methods")
return this.firstName+" " +this.lastName;
}
},
computed: {
fullName: function () {
console.log("執(zhí)行了computed")
return this.firstName + ' ' + this.lastName
}
}
})
setTimeout('app9.firstName="Foo2"',3000);
控制臺(tái)輸出的結(jié)果
執(zhí)行了computed
執(zhí)行了methods
執(zhí)行了methods
執(zhí)行了computed
執(zhí)行了methods
執(zhí)行了methods
由此可見(jiàn)使用computed,function只會(huì)執(zhí)行一次。當(dāng)Vue實(shí)例中綁定的data數(shù)據(jù)改變的時(shí)候,computed也相對(duì)應(yīng)的只改變一次。
相同點(diǎn):在以上代碼中,兩個(gè)p標(biāo)簽都會(huì)打印出同樣被反轉(zhuǎn)的Hello。
不同點(diǎn):
使用了methods的:HTML中,每一個(gè)調(diào)用了Vue的methods的方法,都需要執(zhí)行一遍reversedMessage()這個(gè)方法;
而使用computed計(jì)算屬性的,只執(zhí)行一遍將結(jié)果保存在緩存中。
computed和watch的對(duì)比
html
<div id="demo">{{ fullName }}</div>
js
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
}
}
})
var vm = new Vue({
el: '#demo',
data: {
firstName: 'Foo',
lastName: 'Bar'
},
computed: {
fullName: function () {
return this.firstName + ' ' + this.lastName
}
}
})
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
父組件中vuex方法更新state子組件不能及時(shí)更新并渲染的完美解決方法
這篇文章主要介紹了父組件中vuex方法更新state子組件不能及時(shí)更新并渲染的完美解決方法,需要的朋友可以參考下2018-04-04
解決安裝vue3腳手架@vue/cli報(bào)4048錯(cuò)誤問(wèn)題
這篇文章主要介紹了解決安裝vue3腳手架@vue/cli報(bào)4048錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
vue.js watch經(jīng)常失效的場(chǎng)景與解決方案
這篇文章主要給大家介紹了關(guān)于vue.js watch經(jīng)常失效的場(chǎng)景與解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Vue如何實(shí)現(xiàn)利用vuex永久儲(chǔ)存數(shù)據(jù)
這篇文章主要介紹了Vue如何實(shí)現(xiàn)利用vuex永久儲(chǔ)存數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
vue3使用iframe嵌入ureport2設(shè)計(jì)器,解決預(yù)覽時(shí)NullPointerException異常問(wèn)題
這篇文章主要介紹了vue3使用iframe嵌入ureport2設(shè)計(jì)器,解決預(yù)覽時(shí)NullPointerException異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn)
這篇文章主要介紹了部署vue+Springboot前后端分離項(xiàng)目的步驟實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Vue3封裝自動(dòng)滾動(dòng)列表指令(含網(wǎng)頁(yè)縮放滾動(dòng)問(wèn)題)
本文主要介紹了Vue3封裝自動(dòng)滾動(dòng)列表指令(含網(wǎng)頁(yè)縮放滾動(dòng)問(wèn)題),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05

