vue的watcher 关于数组和对象
数组
改变原数组的几种方法可以被监听:
push pop unshift shift reverse sort splice
不改变原数组的方法不能被监听(deep:true也不能被监听,对数组无效)
slice concat filter
不能被监听到的情况(deep:true也不能被监听,对数组无效)
1、直接下标赋值(但对象直接修改原有属性值可以渲染视图,虽然也监听不到)
2、修改数组length
解决方法:
1、this.$set(this.arr,index,val)
2、push或splice等修改原数组的方法
3、直接赋值数组
对象
不能被监听的情况
1、直接添加、删除属性(删除、添加不会重新渲染视图;设置deep:true依旧监听不到)
2、直接this.obj.name = 'zz' 修改原有属性和 this.$set(this.obj,'name','zz')修改原有属性都不能监听到,但可以重新渲染视图,设置deep:true则可以监听)
解决方法:
1、this.$set()添加、this.$delete()删除属性
2、obj:{
handler(){},
deep:true
}
3、直接重新赋值对象
this.obj=Object.assign({},this.obj,{lover:'song'})
4、活用computed

https://cn.vuejs.org/v2/guide/list.html#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9
浙公网安备 33010602011771号