Vue3的computed用法及說明
更新時間:2025年12月17日 09:13:02 作者:小儲今天暴富了
文章介紹了如何在Vue.js中使用計算屬性,包括只計算不修改值的情況和可以修改的計算屬性,對于只計算不修改值的情況,可以直接使用computed方法,對于需要修改的計算屬性,計算屬性可以傳入一個對象,包含get和set函數(shù)
1.針對只計算不修改值的場景
(1)一個計算屬性
<template>
<input type="text" v-model="num1" />
+
<input type="text" v-model="num2" />
=
<input type="text" v-model="num3" />
</template>
<script lang="ts">
import { defineComponent,ref,reactive,toRefs,computed } from 'vue';
export default defineComponent({
setup(){
let num1=ref(1)
let num2=ref(3)
const num3=computed(()=>{
return Number(num1.value)+Number(num2.value)
})
return{
num1,
num2,
num3
}
}
})
</script>上述的例子只是單純的計算兩個數(shù)的和,可以直接引入computed方法在方法里進行計算

(2)多個計算屬性
<template>
<input type="text" v-model="num1" />
+
<input type="text" v-model="num2" />
=
<input type="text" v-model="num3" />
<hr>
<input type="text" v-model="num1" />
-
<input type="text" v-model="num2" />
=
<input type="text" v-model="num4" />
</template>
<script lang="ts">
import { defineComponent,ref,reactive,toRefs,computed } from 'vue';
export default defineComponent({
setup(){
let num1=ref(3)
let num2=ref(1)
const num3=computed(()=>{
return Number(num1.value)+Number(num2.value)
})
const num4=computed(()=>{
return Number(num1.value)-Number(num2.value)
})
return{
num1,
num2,
num3,
num4
}
}
})
</script>計算屬性不是只可以寫一個的,可以寫任意多個計算屬性,代碼如上所示,效果如下

2.可以修改的計算屬性
問題:如果我們直接修改計算屬性的值會報錯誤
原因:如果傳遞給 computed 的是一個函數(shù),那么這就是一個 getter 函數(shù),我們只能獲取它的值,而不能直接修改它。
如果需要修改計算屬性的值,計算屬性傳入一個對象, 包含get 和 set 函數(shù), 就能實現(xiàn)創(chuàng)建一個可以修改的計算屬性。
代碼如下:
<template>
<input type="text" v-model="num1" />
+
<input type="text" v-model="num2" />
=
<input type="text" v-model="num3" />
<hr>
<button @click="updata">修改計算屬性的值</button>
</template>
<script lang="ts">
import { defineComponent,ref,reactive,toRefs,computed } from 'vue';
export default defineComponent({
setup(){
let num1=ref(3)
let num2=ref(1)
const num3=computed({
get(){
return Number(num1.value)+Number(num2.value)
},
set(value :number){
num2.value=value+1
}
})
const updata=()=>{
num3.value=10
}
return{
num1,
num2,
num3,
updata
}
}
})
</script>效果如下:

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue生成二維碼QR?Code的簡單實現(xiàn)方法示例
這篇文章主要為大家介紹了vue生成二維碼QR?Code的實現(xiàn)示例詳情,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04

