Vue2&3的计算属性(computed)
 
Vue2的计算属性
 
- 原理:data中的属性通过计算得到新的属性,称为计算属性(computed)。
 - computed 具有 getter 和 setter 属性 
- getter 属性在使用时分别有两次调用: 
- 第一次:初始化,初次访问该属性
 - 第二次:当 computed 中的数据发生变化时调用
 
  - setter 属性的调用:  
 - 注意事项: 
- setter 属性本身不会修改属性的值,只用于修改属性本身,而 computed 属性的值被修改并不会更新setter 属性的值。
 - getter 和 setter 属性不能使用箭头函数,箭头函数中的this不是指向vm,而是window。
 
  
  - computed 分别有两种写法: 
- 简写形式:
computed : { 属性名(){ ...... } },不使用setter属性时,才能使用 - 完整形式:
computed : { 属性名 : { get(){ ...... }, set(value){ ...... } } } 
  
 
<template>姓名:<input type="text" v-model="username"><br>反转:<input type="text" v-model="reversedName">
</template><script>export default {name : 'App',data(){return {username : ''}},computed : {reversedName : {get(){return this.username.split('').reverse().join('')},set(value){this.username = value.split('').reverse().join('')}}reversedName(){return this.username.split('').reverse().join('')}}}
</script>
 
Vue3的计算属性
 
- Vue3的 computed 属性是一个组合式API,并且可以使用箭头函数
 - 使用前需要先引入:
import { computed } from 'vue' - computed 属性的两种写法: 
- 简写形式:
computed(() => { ...... }),不使用setter属性时,才能使用 - 完整形式:
computed({get(){ ...... }, set(value){ ...... }}) 
  
 
<template>姓名:<input type="text" v-model="user.name"><br>反转:<input type="text" v-model="reversedName">
</template><script>import { reactive, computed } from 'vue'export default {name : 'App',setup(){let user = reactive({name : ''})let reversedName = computed(() => {return user.name.split('').reverse().join('')})let reversedName = computed({get(){return user.name.split('').reverse().join('')},set(value){user.name = value.split('').reverse().join('')}})return {user, reversedName}}}
</script>