VUE 中 v-for 更新检测
原因
这里我们看到,打印的数组值已经发生变化,但页面没有改变。
经过测试,发现直接对数组元素进行赋值或者计算操作vue并不能监视到数组变化。
由于 JavaScript 的限制,Vue 不能检测以下变动的数组:
当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue
当你修改数组的长度时,例如:vm.items.length = newLength
具体原因是因为Vue2中发布订阅模式使用的是Object.defineProperty()方法来监听数据的改变,而这个方法的缺陷就是无法监听数据变动,在Vue3中已经用Proxy代替改方法,并解决该问题。`
解决
根据vue的官方文档说明:Vue 包含一组观察数组的变异方法,所以它们将会触发视图更新。 这些方法如下:push() pop() shift() unshift() splice() sort() reverse()
所以当我们想要页面实时更新的话就必须使用以上方法。
解决办法: 【vue 中 v-for 渲染不及时 -__ 使用 $forceUpdate()】(时隔多年的更新)