Vue中watch和computed的区别
computed
- computed 是基于响应性依赖来进行缓存的。只有依赖数据发生改变,才会重新进行计算,computed是计算属性的意思,watch是监听的意思。
- 不支持异步,当 computed 内有异步操作时无效,无法监听数据的变化的值。
- 如果函数所依赖的属性没有发生变化,从缓存中读取。
- 必须有return返回。
- 使用方法和data中的数据一样,但是类似一个执行方法。
实例
1 | <!-- 开发环境版本,包含了有帮助的命令行警告 --> |
watch
- 只会监听数据的值是否发生改变,而不会去监听数据的地址是否发生改变,要深度监听需要配合deep:true属性使用
- 不支持缓存,数据变,直接会触发相应的操作
- watch可以没有return
- watch中的函数是不需要调用的
- watch支持异步
- 监听的函数接收两个参数,第一个参数是最新的值;第二个参数是输入之前的值;
- 监听数据必须是data中声明过或者父组件传递过来的props中的数据
总结
- computed 是计算属性,依赖其他属性计算值,并且 computed 的值有缓存,只有当计算值变化才会返回内容。 watch 监听到值的变化就会执行回调,在回调中可以进行一些逻辑操作。
- computed函数不能有异步;watch可以
- computed必须有return;watch可以没有
- watch监听的数据要在data中声明过,computed可以不用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AliveSeven's Blog!
评论