数组更新检测注意事项
由于 JS 的限制,下列情形数组的更新不能被检测到。
- 使用数组下标设置一个数组项时
- 操作数组长度时
1 | var vm = new Vue({ |
对于第一种情况,可以使用 Vue.set() 方法和 vm.$set() 方法(vm.$set() 方法其实就是 Vue.set() 全局方法的别名)。同时可以使用 splice() 实现。
1 | Vue.set(vm.arr, 1, 'x') |
对于第二种情况也可以使用 splice() 方法实现。
1 | vm.arr.splice(2) |
官网链接如下:
数组更新方法-注意事项
对象更新检测注意事项
还是由于 JS 限制,Vue 不能检测对象属性的添加和删除。
1 | var vm = new Vue({ |
同样,你可以使用 Vue.set() 和 vm.$set() 解决这个问题。
1 | Vue.set(vm.userInfo, age, 17) |
当你需要添加多个属性时,正确操作是使用 Object.assign() 或者 lodash 的 extend() 方法。
1 | vm.userInfo = Object.assign({},vm.userInfo,{ |