vue中的computed

一、computed的作用

计算属性将被混入到vue实例中,所有的getter和setter的this上下文自动的绑定为vue实例,computed适用于简单的运算,子模板中放入太多的逻辑会让模板过重且难以维护,如果为计算属性使用了箭头函数,则this不会指向这个组件的实例,

 

二、computed的使用场景

1、性能开销比较大的计算属性 A需要遍历一个巨大的数组并做大量的计算。当有其他的计算属性依赖于 A。如果没有缓存,将要多次执行 A 的 getter!而计算属性中的缓存可以很好的避免多次执行。

2、当一些数据需要随着其他数据变动而变动时

 

三、demo使用

<template>
  <div id="example">
</div>
</template>
<script>
import Vue from "vue";
// 实例一
var vm = new Vue({
  //new vue的作用是新建vue实例
  data: { a: 1 },
  computed: {
    // 仅读取
    aDouble: function () {
      return this.a * 2;
    },
    // 读取和设置
    aPlus: {
      get: function () {
        return this.a + 1;
      },
      set: function (v) {
        this.a = v - 1;
      },
    },
  },
});
console.log(vm.aDouble);  //2
console.log(vm.aPlus); // => 2
vm.aPlus = 4; //设定v=4
console.log(vm.a); // => 3
console.log(vm.aDouble); // => 6





export default {

};
</script>

 

 

 

 

实例二

<template>
  <div id="example">
  <p>Original message: "{{ message }}"</p>
  <p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>
</template>
<script>

// 示例二
export default {
  name: "computed",
  data() {
    return {
    message:'hello' 
    };
  },
  computed:{
      reversedMessage: function () {
      // `this` 指向 vm 实例
      return this.message.split('').reverse().join('')
    }
  },
};
</script>

四、computed的使用体验

1、computed中的值始终取决于原始data中的值,当data中的属性值发生变化的时候,computed中所依赖的值也会发生变化

2、computed中会有缓存,当data中的属性还没有发生变化,多次访问computed中的缓存值。

3、计算属性是基于它们的响应式依赖进行缓存的,只在相关依赖发生变化的时候才会重新计算(PS:方法和属性计算的结果相同,但是方法需要每次重新渲染时,调用方法总会再次执行函数)

4、计算属性默认只有getter,不过也可根据需要设置setter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值