区别:
watch 侦听某一数据的变化从而会触发函数,当数据为对象类型时,对象中的属性值变化时需要使用深度侦听 deep 属性,也可在页面第一次加载时使用立即侦听 immdiate 属性 computed 计算属性是触发函数内部任一依赖项的变化都会重新执行该函数,计算属性有缓存,多次重复使用计算属性时会从缓存中获取返回值,计算属性必须要有 return 关键词
vue 中的 watcher 有三类
- render watcher
- computed
- 自定义 watcher
computed 是一种特殊的 watcher
watch 和 computed 都是以函数为基础的,它们都是通过监听自身依赖的数据在变化时触发相关的函数去实现自身数据的变动
运行时机不同:
- computed 是在 HTML,DOM 加载后马上执行的,如赋值;(属性将被混入到 Vue 实例)
- watch 它用于观察 Vue 实例上的数据变动,一般情况下是依赖项的值变化之后再执行,当然可以设置立刻执行
计算属性有缓存
代码内容不同
watcher 可以写任意的逻辑代码;而计算属性必须是同步的计算,并返回