vue的计算属性

233 阅读1分钟

什么是计算属性?

当一个数据,依赖另外的一些数据计算而来的结果。

  • 关键字:computed

  • 语法:

computed: {
    "计算属性名" () {
        return "值"
    }
}
  • 例如计算两个数的和:
<template>
  <div>
    <p>{{sum}}</p>  
    <button @click="a++">+</button>
  </div>
</template>

<script>
export default {
  data () {
    return {
      a:1,
      b:2
    }
  },
  computed: {
    sum(){
      return this.a+this.b
    }
  }
}
</script>

<style>

</style>

注意点:计算属性也是vue数据变量, 所以不能和data里重名, 用法和data相同

计算属性的好处是什么?

  • 计算属性带有缓存的作用。

  • 计算属性对应函数执行后, 会把return值缓存起来

  • 计算属性是基于它们的依赖项的值结果进行缓存的,只要依赖的变量不变, 都直接从缓存取结果

  • 比普通方法的性能更高一些

image-20210113232439893.png

计算属性的完整写法

什么时候使用完整写法?

  • 当要给计算属性变量赋值的时候

  • 语法:

computed:{
    计算属性变量:{
      set(){
        console.log(inputVal);
        },
      get(){
      console.log('触发get方法');
      return  值
      }
    }
  }

什么时候触发set函数和get函数

  1. set接受要赋予的值

  2. get里要返回给这个计算属性具体值

  3. 全选反选的案例

<template>
  <div>
    <!-- 全选案例 -->
    <span>全选:</span>
    <input type="checkbox" v-model="isAll">
    <ul>
      <li v-for="item in list" :key="item.id">
        <input type="checkbox" v-model="item.status">{{item.name}}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  // 数据
  data(){
    return {
      list :[
        {id:1,
        name:'猴子',
        status:false
        },
        {id:2,
        name:'混子',
        status:false
        },
        {id:3,
        name:'狼狗',
        status:false
        },
        {id:4,
        name:'大宝剑',
        status:false
        },
      ]
    }
  },
  // 计算属性
  computed: {
    isAll:{
      set(status){
        // 获取全选按钮的状态
        // 把全选按钮的状态赋给每一个li标签
        this.list.forEach(item=>{
          item.status=status
        })
      },
      get(){
        return this.list.every(item=>item.status)
      }
    }
  }
}
</script>

<style>

</style>