Vue computed计算属性的使用方法
程序员文章站
2022-06-03 14:07:45
computed
computed:相当于method,返回function内return的值赋值在html的dom上。但是多个{{}}使用了computed,compu...
computed
computed:相当于method,返回function内return的值赋值在html的dom上。但是多个{{}}使用了computed,computed内的function也只执行一次。仅当function内涉及到vue实例绑定的data的值的改变,function才会从新执行,并修改dom上的内容。
computed和method的对比
<div id="example"> {{ message.split('').reverse().join('') }} </div>
这个是vue官网一直拿来作为例子的代码。在{{}}可以很方便的放入单个表达式,但是当一个html的dom里面存在太多的表达式,程序会变得很笨重难于维护。
html
<div id="app9"> 9、method与computed的区别<br/> fullname<br/> {{fullname}}<br/> fullname2<br/> {{fullname}}<br/> fullnamemethod<br/> {{getfullname()}}<br/> fullnamemethod2<br/> {{getfullname()}}<br/> </div>
js
var app9 = new vue({ el: '#app9', data: { firstname: 'foo', lastname: 'bar' }, methods:{ getfullname:function () { console.log("执行了methods") return this.firstname+" " +this.lastname; } }, computed: { fullname: function () { console.log("执行了computed") return this.firstname + ' ' + this.lastname } } }) settimeout('app9.firstname="foo2"',3000);
控制台输出的结果
执行了computed
执行了methods
执行了methods
执行了computed
执行了methods
执行了methods
由此可见使用computed,function只会执行一次。当vue实例中绑定的data数据改变的时候,computed也相对应的只改变一次。
相同点:在以上代码中,两个p标签都会打印出同样被反转的hello。
不同点:
使用了methods的:html中,每一个调用了vue的methods的方法,都需要执行一遍reversedmessage()这个方法;
而使用computed计算属性的,只执行一遍将结果保存在缓存中。
computed和watch的对比
html
<div id="demo">{{ fullname }}</div>
js
var vm = new vue({ el: '#demo', data: { firstname: 'foo', lastname: 'bar', fullname: 'foo bar' }, watch: { firstname: function (val) { this.fullname = val + ' ' + this.lastname }, lastname: function (val) { this.fullname = this.firstname + ' ' + val } } })
var vm = new vue({ el: '#demo', data: { firstname: 'foo', lastname: 'bar' }, computed: { fullname: function () { return this.firstname + ' ' + this.lastname } } })
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。