methods和computed和watch的联系和区别

1.methods的方法是通过触发一个事件或者函数的回调来实现数据的更新,他的执行,依赖于事件的触发。
2.watch的类似于emit与on这种触发的方式,通过vue的$watch实例监听值得改变来自动的触发一个函数的执行。
3.computed函数的执行最快也是执行最靠前的,在html渲染开始,就已经执行了。

计算属性 :和普通属性一样是在模板中绑定计算属性的,当data中对应数据发生改变时,计算属性的值也会发生改变。
Methods:methods是方法,只要调用它,函数就会执行。
相同:两者达到的效果是同样的。
不同:计算属性是基于它们的依赖进行缓存的,只有相关依赖会发生改变时才会重新求职。只要相关依赖未改变,只会返回之前的结果,不再执行函数。
watched属性:代码更易于理解,它指定监测的值是谁,然后相应的改变其他的值。

methods事件的触发就不说了,直接回调或者是绑定的@这样的事件来触发。
而watch的触发消耗也大,每次数据的改变就要触发一次函数的执行,要节省着点用啊。
computed用在改变一个变量的显示,和data对象里的数据属性是同一类的。返回的值直接就修改掉了原先的值,最大的优点在于简洁速度快也可以作为一个过滤器用也可以起到data中声明一个变量的作用,依赖别的变量来显示新的变量。

computed计算属性是基于它们的依赖进行缓存的。计算属性computed只有在它的相关依赖发生改变时才会重新求值。这就意味着只要message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。而对于method ,只要发生重新渲染,method 调用总会执行该函数。

总之:数据量大,需要缓存的时候用computed;每次确实需要重新加载,不需要缓存时用methods

computed和watch

Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:watch 属性。

当你有一些数据需要随着其它数据变动而变动时,你很容易滥用 watch——特别是如果你之前使用过 AngularJS。然而,更好的想法是使用 computed 属性而不是命令式的 watch 回调。细想一下这个例子:

 

<div id="demo">{{ fullName }}</div>

 

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

}

}

})

上面代码是命令式的和重复的。将它与 computed 属性的版本进行比较:

 

var vm = new Vue({

el: '#demo',

data: {

firstName: 'Foo',

lastName: 'Bar'

},

computed: {

fullName: function () {

return this.firstName + ' ' + this.lastName

}

}

})

总之:尽量用computed计算属性来监视数据的变化,因为它本身就这个特性,用watch没有computed“自动”,手动设置使代码变复杂。

猜你喜欢

转载自blog.csdn.net/Le_OOP/article/details/81745472