Vue中的計(jì)算屬性介紹
1、什么是計(jì)算屬性
模板內(nèi)的表達(dá)式非常便利,但是設(shè)計(jì)它們的初衷是用于簡(jiǎn)單運(yùn)算的。在模板中放入太多的邏輯會(huì)讓模板過(guò)重且難以維護(hù)。
例如:
<div id="app">
{
<!-- -->{ message.split('').reverse().join('') }}
</div>
在這個(gè)地方,模板不再是簡(jiǎn)單的聲明式邏輯。而是在插值表達(dá)式中直接反轉(zhuǎn)字符串,如果你在多處用到該反轉(zhuǎn)字符串時(shí),這樣寫就會(huì)很麻煩,增加消耗。所以,對(duì)于任何復(fù)雜邏輯,你都應(yīng)當(dāng)使用 計(jì)算屬性 。
2.計(jì)算屬性的語(yǔ)法
computed{
函數(shù)(){return //必須又返回值。}通常該函數(shù)為get函數(shù)
}
3.舉例
針對(duì)上面這個(gè)例子,我們可以這樣寫:
<div id="app">
<p>原來(lái)的字符串:{
<!-- -->{mes}}</p>
<p>反轉(zhuǎn)后的字符串:{
<!-- -->{reverseMes}}</p>
</div>
let vm = new Vue({
el:'#app',
data:{
mes:'sayhello'
},
computed: {
reverseMes(){
// 計(jì)算屬性中一定要有返回值
return this.mes.split('').reverse().join('')
}
}
})
查看結(jié)果:

這里我們?cè)?code>vue實(shí)例的 computed 計(jì)算屬性中 定義了一個(gè)函數(shù),函數(shù)的返回值就是我們需要得到的結(jié)果,可以直接在插值表達(dá)式中調(diào)用,并渲染出來(lái)
在舉個(gè)例子,通過(guò)計(jì)算屬性,讓單詞的首字母變大寫:
<div id="app">
<p>原字符串:{
<!-- -->{name}}</p>
<p>首字母大寫:{
<!-- -->{toUpperCase}}</p>
</div>
在vue實(shí)例的 computed計(jì)算屬性中,自定義我們的計(jì)算屬性,通過(guò)獲取到字符串第一個(gè)字符并把他轉(zhuǎn)為大寫,在和拆分后的剩余字符連接:
el:"#app",
data:{
name:'tom'
},
// 計(jì)算屬性
computed:{
// 自定義 計(jì)算屬性
toUpperCase(){
return this.name.charAt(0).toUpperCase().concat(this.name.slice(1,3))
}
}
輸出結(jié)果為:

計(jì)算屬性還有兩個(gè)很實(shí)用的小技巧容易被忽略: 一是計(jì)算屬性可以依賴其他計(jì)算屬性;? 二是計(jì)算屬性不僅可以依賴當(dāng)前Vue 實(shí)例的數(shù)據(jù),還可以依賴其他實(shí)例的數(shù)據(jù),
例如:
<div id="app1"></div>
<div id="app2">
{
<!-- -->{reverseMes}}
</div>
let vm1 = new Vue({
el:'#app1',
data:{
mes:'hello'
}
})
let vm2 = new Vue({
el:'#app2',
computed: {
reverseMes(){
// 使用實(shí)例 vm1中的data數(shù)據(jù)中心的 mes 去做反轉(zhuǎn)字符串的操作
return vm1.mes.split('').reverse().join('')
}
}
})
查看結(jié)果:

實(shí)例vm1中的數(shù)據(jù),vm2計(jì)算屬性也可以使用
自定義的計(jì)算屬性除了可以在插值表達(dá)式中使用,還可以在 v-bind: 屬性綁定中使用,用來(lái)做一些樣式的變換等等。
到此這篇關(guān)于Vue中的計(jì)算屬性介紹的文章就介紹到這了,更多相關(guān)Vue 計(jì)算屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3插槽:el-table表頭插入tooltip及更換表格背景色方式
這篇文章主要介紹了vue3插槽:el-table表頭插入tooltip及更換表格背景色方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
Vue Element Sortablejs實(shí)現(xiàn)表格列的拖拽案例詳解
這篇文章主要介紹了Vue Element Sortablejs實(shí)現(xiàn)表格列的拖拽案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
探秘Vue異步更新機(jī)制中nextTick的原理與實(shí)現(xiàn)
nextTick?是?Vue?提供的一個(gè)重要工具,它的作用主要體現(xiàn)在幫助我們更好地處理異步操作,下面就跟隨小編一起來(lái)探索一下nextTick的原理與實(shí)現(xiàn)吧2024-02-02
vue3+vite實(shí)現(xiàn)低版本瀏覽器兼容的解決方案(出現(xiàn)白屏問(wèn)題)
項(xiàng)目全線使用vue3的時(shí)候,自然使用的是配套更加契合的vite打包工具,于是自然而然會(huì)用到很多新的語(yǔ)法,本文給大家介紹了vue3+vite實(shí)現(xiàn)低版本瀏覽器兼容的解決方案(出現(xiàn)白屏問(wèn)題),需要的朋友可以參考下2024-04-04
Vue動(dòng)態(tài)添加class可能帶來(lái)的問(wèn)題解讀(被覆蓋)
文章討論了在使用Vue.js時(shí),通過(guò)動(dòng)態(tài)class修改元素樣式時(shí)可能會(huì)遇到的問(wèn)題,當(dāng)通過(guò)JavaScript動(dòng)態(tài)添加類時(shí),Vue的動(dòng)態(tài)class會(huì)覆蓋掉通過(guò)JavaScript添加的類,導(dǎo)致樣式丟失,這個(gè)問(wèn)題在實(shí)際開(kāi)發(fā)中可能會(huì)遇到,尤其是在使用第三方框架2024-12-12
vue循環(huán)數(shù)組改變點(diǎn)擊文字的顏色
這篇文章主要為大家詳細(xì)介紹了vue循環(huán)數(shù)組改變點(diǎn)擊文字的顏色,非常實(shí)用的切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
解決vue里a標(biāo)簽值解析變量,跳轉(zhuǎn)頁(yè)面,前面加默認(rèn)域名端口的問(wèn)題
這篇文章主要介紹了解決vue里a標(biāo)簽值解析變量,跳轉(zhuǎn)頁(yè)面,前面加默認(rèn)域名端口的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Vant的安裝和配合引入Vue.js項(xiàng)目里的方法步驟
這篇文章主要介紹了Vant的安裝和配合引入Vue.js項(xiàng)目里的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12

