在 created 阶段,视图未渲染时,直接对数组元素 arrList 赋值 data 里面的初值会发生改变;
在 mounted 阶段,直接对数组元素 arrList 赋值会导致Vue无法更新View
( 此时在mounted阶段,简单的做法是不要对数组元素赋值,而是对具体元素的属性进行更新 )
下面具体阐述:
如果像上面这样,在 mounted 中直接改变原数组中某一个对象,
则页面渲染如下:我们发现页面并未重新渲染,data 值的改变未被侦测到。
【解决方案一】:改的是具体的某个属性,而非整个对象
页面渲染如下: 对象属性值的变化被侦测到,页面渲染发生改变
【解决方案二】:通过 splice() 方法,删除某个元素后,再添加一个元素,达到“赋值”的效果:
【解决方案三】: 在 created 钩子中修改整个对象的值
页面渲染如下: 对象属性值的变化被侦测到,页面渲染发生改变
【解决方案四】:在created 或 mounted 中,调用 vm.$set(target, key, newValue) 或 Vue.set(target, key, newValue)
原文:https://www.cnblogs.com/edwardwzw/p/13476151.html