响应式系统:正确操作数据层(M层),视图层(V层)会发生变化,会响应。但是如果出现一些非法操作,M层发生变化,但V层不响应,下面我们就说说有哪几个情况
1. 对数组使用了非变异方法
修改了原数组:变异
没有修改原数据,而是返回了新数组:非变异
有哪些数组方法式非变异方法呢?
有:arr.map() , arr.filter() , arr.slice() , arr.concat
2. 修改了数组的长度
3.修改了数组根索引上的值 (根索引) arr[0]
4. 给对象添加了不存在的属性
建议:不要修改数组的根键,不要修改数组的长度,数据一开始都要声明在data选项内部,不要对数组使用非变异的api
如果不小心使用了,想偷懒,有以下几种解决方法,但是建议不要偷懒!!!
1. Vue.set(数组|对象, index, value)
2. vm|this.$set(对象, key, value)
3. this.$forceUpdate() 强制刷新
4. this|vm.$mount('#app') 再次获取元素,将元素的的html内容替换掉
<