Vue computed計(jì)算屬性總結(jié)記錄
前言
Vue中的計(jì)算屬性(comupted)是一個(gè)非常常用的技術(shù),如果使用得當(dāng),可以很優(yōu)雅的解決傳統(tǒng)方式較為復(fù)雜的問(wèn)題,這篇文章以近期使用的computed為例,對(duì)computed進(jìn)行簡(jiǎn)要介紹。
一、計(jì)算屬性介紹
計(jì)算屬性本質(zhì)上是一個(gè)方法,寫在computed:{}配置項(xiàng)里面,可以當(dāng)做屬性來(lái)使用。能使用計(jì)算屬性的場(chǎng)景使用模板語(yǔ)法也同樣能夠?qū)崿F(xiàn),不過(guò)可能較為復(fù)雜,而計(jì)算屬性存在的意義在于使得模板語(yǔ)法更加簡(jiǎn)介。因此,對(duì)于復(fù)雜邏輯的計(jì)算結(jié)果需要被緩存,再次利用的情況下都需要使用計(jì)算屬性。
二、使用步驟
1.template中綁定計(jì)算屬性
<el-form-item label="類型" prop="type">
<el-radio v-model="pieType" :label="'ring'">環(huán)形</el-radio>
<el-radio v-model="pieType" :label="'circle'">圓形</el-radio>
</el-form-item>
我這里在form表單中type類型的表單項(xiàng)中使用了計(jì)算屬性pieType
2.script中定義計(jì)算屬性
computed:{
pieType:{
set(val){
if (val === 'ring'){
this.$set(this.curChart.option.series[0], 'radius', ['60%', '80%'])
}else if (val === 'circle'){
this.$set(this.curChart.option.series[0], 'radius', '80%')
}
},
get(){
if (this.curChart.option.series[0].radius === '80%'){
return 'circle'
}else if (JSON.stringify(this.curChart.option.series[0].radius) === JSON.stringify(['60%', '80%'])){
return 'ring'
}
}
}
},
在這個(gè)示例中,我想要實(shí)現(xiàn)如下效果:當(dāng) this.curChart.option.series[0].radius值為 '80%'時(shí),form表單中顯示餅狀圖的類型為環(huán)形圖,當(dāng) this.curChart.option.series[0].radius值為[‘60%’, ‘80%’],form表單中顯式餅狀圖類型為圓形。因此在get時(shí),判斷radius是哪種類型,返回對(duì)應(yīng)的ring或者circle值;在set時(shí),根據(jù)pieType值,更改this.curChart.option.series[0]的radius值。按照這個(gè)思路,你也可以進(jìn)行顯示值和存儲(chǔ)值的切換。
3.計(jì)算屬性的配置項(xiàng)
- get(): 必須寫,且無(wú)參。當(dāng)初次讀取計(jì)算屬性或者計(jì)算屬性依賴的數(shù)據(jù)發(fā)生變化時(shí)被調(diào)用,get()方法的返回值就是計(jì)算屬性的值。
- set(): 可寫,接受一個(gè)可選參數(shù),該參數(shù)是計(jì)算屬性被修改之后的值。當(dāng)計(jì)算屬性被修改時(shí)調(diào)用,例如在上面的例子中,切換類型的單選按鈕,會(huì)導(dǎo)致計(jì)算屬性被修改,進(jìn)而執(zhí)行set()方法,對(duì)this.curChart.option.series[0]的radius值進(jìn)行賦值。
4.計(jì)算屬性的簡(jiǎn)寫
當(dāng)計(jì)算屬性只需要get值,也就是計(jì)算屬性本身不會(huì)變化,只會(huì)受到別的數(shù)據(jù)影響而變化時(shí),采用簡(jiǎn)寫方式:
data: {
firstName: '熊',
lastName: '大'
},
computed:{
//此處簡(jiǎn)寫方式一:
fullName:{
get(){
return this.firstName +'-'+ this.lastName
}
}
//此處簡(jiǎn)寫方式二:
fullName(){
return this.firstName +'-'+ this.lastName
}
}
總結(jié)
本文對(duì)vue的計(jì)算屬性進(jìn)行總結(jié)記錄,并根據(jù)最近用到computed的地方進(jìn)行詳細(xì)舉例說(shuō)明,此外還介紹了計(jì)算屬性的簡(jiǎn)寫方式,get(), set()方法的作用和調(diào)用方式。
到此這篇關(guān)于Vue computed計(jì)算屬性總結(jié)記錄的文章就介紹到這了,更多相關(guān)Vue computed計(jì)算屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
element根據(jù)輸入動(dòng)態(tài)生成表格的示例代碼
在現(xiàn)代電商系統(tǒng)開發(fā)中,后臺(tái)管理界面經(jīng)常需要根據(jù)商品規(guī)格和規(guī)格值動(dòng)態(tài)生成SKU表格,本文通過(guò)element-ui框架,展示了如何在Vue.js的環(huán)境下,利用子組件和動(dòng)態(tài)綁定的方式,實(shí)現(xiàn)SKU表格的增刪改查功能2024-11-11
Vue + better-scroll 實(shí)現(xiàn)移動(dòng)端字母索引導(dǎo)航功能
better-scroll 是一款重點(diǎn)解決移動(dòng)端(已支持 PC)各種滾動(dòng)場(chǎng)景需求的插件。這篇文章主要介紹了Vue + better-scroll 實(shí)現(xiàn)移動(dòng)端字母索引導(dǎo)航功能,需要的朋友可以參考下2018-05-05
Vue3中引入Pinia存儲(chǔ)庫(kù)使用示例詳解
這篇文章主要介紹了Vue3中引入Pinia存儲(chǔ)庫(kù)使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
vue 二維碼長(zhǎng)按保存和復(fù)制內(nèi)容操作
這篇文章主要介紹了vue 二維碼長(zhǎng)按保存和復(fù)制內(nèi)容操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
uniapp中使用lottie實(shí)現(xiàn)JSON動(dòng)畫的操作步驟
這篇文章主要介紹了如何在項(xiàng)目中使用JSON動(dòng)畫組件,包括創(chuàng)建目錄結(jié)構(gòu)、下載JSON文件、編寫自定義組件代碼以及組件的使用方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-01-01

