Computed计算属性
Computed有两种写法选项式和函数式
选项式
vue
12345678910111213141516171819202122232425
<template>
<input type="text" v-model="firstName">
<input type="text" v-model="lastName">
{{ name }}
<button @click="change">修改</button>
</template>
<script setup lang="ts">
import { computed, ref } from 'vue';
const firstName = ref('张');
const lastName = ref('三');
const change = () => {
name.value = 'Mc_Cain'
}
//选项式
const name = computed({
get() {//computed展示的逻辑
return firstName.value + "_" + lastName.value
},
set(value: string) {//computed修改时执行的函数
[firstName.value, lastName.value] = value.split('_')
}
})
</script>
函数式
vue
12345678910111213141516
<template>
<input type="text" v-model="firstName">
<input type="text" v-model="lastName">
{{ name }}
</template>
<script setup lang="ts">
import { computed, ref } from 'vue';
const firstName = ref('张');
const lastName = ref('三');
//函数式
const name = computed(() => {
return firstName.value + lastName.value
})
</script>
函数式只能实现get函数的逻辑,不能实现set的逻辑,因此使用函数式定义的Computed不能修改
