他说的是你改变对象的某一属性,而这一个属性并没有事先定义。Vue通过Object.definedProperty来劫持data上的数据,对对象这一类型会遍历所有属性来设置setter/getter。所以如果你没有事先就声明好对象的属性而动态添加的话会检测不到,比如:
data: {
obj: {
x: 1,
}
},
methods: {
change() {
// y没有事先声明,无法检测到变化
this.obj.y = 2;
}
}
数组也是同理。【PS:实际上数组是可以检测到的,但是据尤大所说是出于性价比的考虑而没有做,感兴趣可以搜一下,gayhub上有人提过issue貌似】
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…