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