computed函数,是用来定义计算属性的,计算属性不能修改
1.基本使用–只读
<template>
<div>
<div>计算属性</div>
<hr>
<div>今年:{{age}}岁了</div>
<div>明年:{{nextAge}}岁了</div>
</div>
</template>
<script>
// 按需导入computed函数
import { ref, computed } from 'vue'
export default {
name: 'Test',
setup () {
// 计算属性:简化模板
// 应用场景:基于已有的数据,计算一种数据
const age = ref(18)
// 计算属性基本使用
const nextAge = computed(() => {
// 回调函数必须return,结果就是计算的结果
// 如果计算属性依赖的数据发生变化,那么会重新计算
return age.value + 1
})
return { age, nextAge }
}
}
</script>
<style lang="less">
</style>
总结:Vue3中计算属性也是组合API风格
- 回调函数必须return,结果就是计算的结果
- 如果计算属性依赖的数据发生变化,那么会重新计算
- 不要在计算中进行异步操作
2.高级用法–可读可写
<template>
<div>
<div>计算属性</div>
<hr>
<button @click='nextAge=28'>点击修改</button>
<div>今年:{{age}}岁了</div>
<div>明年:{{nextAge}}岁了</div>
</div>
</template>
<script>
// 按需导入computed函数
import { ref, computed } from 'vue'
export default {
name: 'Test',
setup () {
// 计算属性:简化模板
// 应用场景:基于已有的数据,计算一种数据
const age = ref(18)
// // 计算属性基本使用
// const nextAge = computed(() => {
// // 回调函数必须return,结果就是计算的结果
// // 如果计算属性依赖的数据发生变化,那么会重新计算
// return age.value + 1
// })
// 修改计算属性的值
const nextAge = computed({
get () {
// 如果读取计算属性的值,默认调用get方法
return age.value + 1
},
set (v) {
// 如果要想修改计算属性的值,默认调用set方法
age.value = v - 1
}
})
return { age, nextAge }
}
}
</script>
<style lang="less">
</style>