Vue 计算属性就是通过其他变量计算得到另一个属性。Vue 计算属性具有缓存功能。Vue 计算属性是基于它们的依赖进行缓存的。Vue计算属性只有在它的相关依赖发生改变时才会重新求值。
Vue 侦听器 watch 是侦听一个特定的值,当该值变化时执行特定的函数。
vm.$watch
,它们的共同之处就是每个定义的属性都单独建立了一个 Watcher
对象。如果一个数据依赖于其他数据,那么把这个数据设计为 computed 的。
如果你需要在某个数据变化时做一些事情,使用 watch 来观察这个数据变化。watch 属性强调自身值得改变前后的动作,所以才有回调 func(newVal,oldVal)
。
Vue computed 是用 data 已经申明的变量可以计算出来的另一个变量用来渲染页面比较合适方便。而 Vue watch 适合监听某个 data 中的变量来操作一些逻辑行为比较合适,比如监听某个变量改变然后发起异步请求。
很多功能本来就很多属性都可以用,只不过有更适合的。如果一个值依赖多个属性(多对一),用 computed 肯定是更加方便的。如果一个值变化后会引起一系列操作,或者一个值变化会引起一系列值的变化(一对多),用 watch 更加方便一些。