一、响应式系统
响应式系统,指的是,当一个 Vue 实例被创建时,它会将 data 对象中的所有的数据加入到 Vue 的响应式系统中。当这些数据的值发生改变时,响应式系统会立马检测到数据的变化,然后自动更新页面。
二、无法检测的数据变化
虽然大部分的数据变化,响应式系统都能检测到,但是有四种特殊情况,是响应式系统无法检测的。
针对对象,Vue 无法检测到以下两种变化:
- 给对象中新增属性;
- 删除对象中的某一个属性;
针对数组,Vue 无法检测到以下两种变化:
- 通过下标操作数组元素;
- 修改数组的长度;
解决方案
给对象新增属性,可以采用以下几种方式:
通过下标修改数组的元素,或者修改数组的长度,可以采用以下几种方式:this.student = {...this.student,gender: '男'}// 方法二this.$set(this.student, 'gender', '男');// 方法三this.student = Object.assign({}, this.student, { gender: '男' });
// 修改数组元素方法一:this.arr.splice(0, 1, 'd');// 修改数组元素方法二:this.$set(this.arr, 0, 'd');// 清空数组:this.arr = [];// 修改数组的长度this.arr.splice(0)
