watch和computed的用法有点相近,
watch
computed
第一个区别
computed 里的fullName
他是一个自定义属性,他不能个 data 里面的属性有重复的情况,如果有重复的情况会报错。
而 watch 里面的fullName
的属性必须是已经存在的,这个属性要么的 data 里面的,要么的 computed 里面的。
第二个区别
computed定义的这个属性函数里面需要依赖一个或多个数据项,然后将这些数据项进行操作,计算,从而返回一个数据,
而 watch 只能去监听一个已经存在的数据,要么是监听 data 里面的数据,要么去监听 computed 里面计算出来的数据,而 watch 里面的函数会接收两个参数,一个是新属性,一盒是旧属性,
第三个区别
watch 是允许异步操作的,如:监听这个fullName之后呢,将这个fullName传递给后端,后端会返回一个分数,在返回分数之前,我们可以给他设置一个中间状态,数据返回来之后,我们再将数据展示出来,这就是异步操作的步骤。computed 是无法实现的。
<script>
export default {
data(){
return{
firstName:"11",
lastName:"22",
count:0
}
},
computed:{
fullName:function(){
return this.firstName + this.lastName
}
},
watch: {
fullName:function(newVal,oldVal){
this.count++
}
},
}
</script>