Vue-01:计算属性缓存 vs 方法

需求:

根据data里的库存(cout)来修改按钮的可用状态和按钮文本

方法一:

<div id="root">
        <h1>库存:{{count}}</h1>
        <div>{{tip}}</div>
        <button @click="count--" v-bind:disabled="count<=0">{{tip}}</button>
</div>
el: '#root',
        data() {
            return {
                count: 2
            }
        },
        computed: {
            tip() {
                console.log("执行了一次computed方法");
                return this.count > 0 ? "购买" : "没货"
            }
        }

方法二:

<div id="root">
        <h1>库存:{{count}}</h1>
        <div>{{tip()}}</div>
        <button @click="count--" v-bind:disabled="count<=0">{{tip()}}</button>
</div>
        el: '#root',
        data() {
            return {
                count: 2
            }
        },
        methods: {
            tip() {
                console.log("执行了一次methods方法");
                return this.count > 0 ? "购买" : "没货"
            }
        }

两种方式在结果上确实是完全相同的:

  

不同之处:

控制台里使用计算属性实现只打印了一次提示信息,使用方法实现打印了两次提示信息

在于计算属性值会基于其响应式依赖被缓存。一个计算属性仅会在其响应式依赖更新时才重新计算。这意味着只要count不改变,无论多少次访问 ,都会立即返回先前的计算结果,而不用重复执行 getter 函数。

在这个例子里:
计算属性在第二次{{tip}}的时候沿用了第一次计算的结果

相比之下,方法调用总是会在重渲染发生时再次执行函数。

每次点击购买count发生改变,计算属性都只会计算一次,button里的tip信息会沿用<div>{{tip}}</div>里计算好的tip,而方法调用总会固定执行两次tip()

如果计算逻辑更复杂,每次重渲染非常耗性能,确定不需要缓存,那么也可以使用方法调用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值