前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue中的computed

vue中的computed

原创
作者头像
用户1349575
发布2022-02-18 20:59:45
8920
发布2022-02-18 20:59:45
举报
文章被收录于专栏:编程社区

omputed虽然写法上像个函数,但是实际上是计算属性。它会根据data数据的数据对象做计算处理,就类似于getter跟setter一样创造一个存取器属性。它有个特点,就是Vue内部做了缓存处理,只有它的依赖属性发生了变化,它才会重新计算并且触发渲染。否则不会再次触发计算。

普通写法

代码语言:javascript
复制
const vm=new Vue({
    data:{
        a:1
    },
    computed:{
        b:function(){
            return this.a+1
        },
        c(){ // es6写法
        return this.a+2
        }
    }
})
vm.b //2
vm.c //3

上面的效果用methods也能实现。确实使用methods也能实现此种需求,但是在这种情况下我们的计算属性相较于methods是有很大优势的,这个优势就是计算属性存在缓存。

如果我们使用methods实现前面的需求,当message的反转结果有多个地方在使用,对应的methods函数会被调用多次,函数内部的逻辑也需要执行多次;而计算属性因为存在缓存,只要message数据未发生变化,则多次访问计算属性对应的函数只会执行一次。

计算属性的sette

计算属性默认只有getter,不过在需要时你也可以提供一个setter。

代码语言:javascript
复制
const vm=new Vue({
    data:{n:1},
    computed:{
        a:{
            get(){return this.n+1},
            set(value){this.n=value-1}
        }    
    
    }
})
vm.n // 1
vm.a =3
vm.n //2

存取器的写法看上去就像设置一个属性一样了,而且我们还可以设置计算属性的值,上面的写法会影响到响应式属性n,当设置vm.a时,vm.n也会发生变化。

computed默认有缓存效果,当计算属性没有发生变化时,不会重新计算更不会重新渲染。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档