vue中computed和watch区别
文章类型:Vue
发布者:hp
发布时间:2023-03-17
computed和watch都是基于watcher来实现的,那么两者的区别是?
一:computed
1:是计算属性,也就是计算值
2:具有缓存性,依赖的值不变化,值在getter执行后是会缓存的,直接取缓存中的计算结果,依赖的属性值改变后,下一次获取computed的值时才会重新getter来计算
3:适用于计算比较消耗性能的计算场景
4:数据在 data 中没有声明,如果声明会报错
5:不支持异步,有异步操作时,无法监听数据的变化
6:computed 计算属性值是函数时,默认使用get。如果属性值是属性值时,属性有get和set方法,当数据发生变化会调用set方法
computed:{
msg:function(){
return this.name
}
}
二:watch
1:是「观察、监控值」的作用,用于观察props $emit或者本组件的值,当数据变化时来执行回调
2:无缓存性,页面重新渲染时值不变化也会执行
3:监测的数据必须在 data 中声明或 props 中数据
4:支持异步操作
5:有两个参数immediate :组件加载立即触发回调函数,deep:深度监听,任意的属性值改变都会触发。
watch:{
first( newVal , oldVal ){
console.log('newVal',newVal)
console.log('oldVal',oldVal)
}
},
三:总结
当要进行数值计算,而且依赖于其他数据=>使用computed
当要进行某个数据变化时做一些事情=>使用watch