vue中v-for循环时,列表的数据更新但是页面未渲染,应该怎么使其渲染?

vue中v-for循环时,列表的数据更新但是页面未渲染,应该怎么使其渲染?
官方说有变异方法,push,shift之类的,目前只能用笨方法加个push然后重新渲染了,但是觉得不是很好,请问有没有正规一点的方法数据刷新时列表跟着刷新。

阅读 14k
2 个回答

vue官方文档:
https://cn.vuejs.org/v2/guide...

由于 JavaScript 的限制,Vue 不能检测以下变动的数组:
当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue
当你修改数组的长度时,例如:vm.items.length = newLength

为了解决第一类问题,以下两种方式都可以实现和 vm.items[indexOfItem] = newValue相同的效果,同时也将触发状态更新:
// Vue.set Vue.set(example1.items, indexOfItem,newValue)
// Array.prototype.splice example1.items.splice(indexOfItem,1, newValue)
为了解决第二类问题,你可以使用 splice: example1.items.splice(newLength)

以上两类要特殊处理, 其他的列表数据变动是能被vue检测到的(包括各种splice,sort,push, 或者整个数组替换等等)

试试Vue.set?
如果实在懒,可以this.data = JSON.parse(JSON.stringify(this.data));?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题