vue官方的原文:由于 JavaScript 的限制, Vue 不能检测以下变动的数组:
当你利用索引直接设置一个项时,例如: vm.items[indexOfItem] = newValue
当你修改数组的长度时,例如: vm.items.length = newLength
而其实是由于性能问题,vue数组的变化没有完全变成响应式。
this.data[index].isTrue= true;
还有对于对象新增删除属性时
可以通过
Vue.set(this.data, index, this.data[index]); ——对象或数组、key、value
或者
this.$set(this.data, index, this.data[index]);
数组的话还可以通过数组api解决这些问题,本质是手动触发watcher的更新
const methodsToPatch = [
'push',
'pop',
'shift',
'unshift',
'splice',
'sort',
'reverse'
]