由于 JavaScript 的限制,Vue 不能检测数组和对象的变化。
官网地址
Vue中数组和对象改变,页面是有及时更新的啊!这句话说的是哪种情况?
他说的是你改变对象的某一属性,而这一个属性并没有事先定义。Vue通过Object.definedProperty来劫持data上的数据,对对象这一类型会遍历所有属性来设置setter/getter。所以如果你没有事先就声明好对象的属性而动态添加的话会检测不到,比如:
data: {
obj: {
x: 1,
}
},
methods: {
change() {
// y没有事先声明,无法检测到变化
this.obj.y = 2;
}
}
数组也是同理。【PS:实际上数组是可以检测到的,但是据尤大所说是出于性价比的考虑而没有做,感兴趣可以搜一下,gayhub上有人提过issue貌似】