Vue设置data里数组的值,视图不渲染问题

最近在项目开发过程中发现,在我设置了data里数组的值后,视图没有渲染。在代码中打断点调试,看到值已经改变了,但是视图没有渲染,打开VUE-devtools,发现值也没变。按理来说vue data数据中心的数据是双向绑定的,当数据中心的数据发生改变时,视图就会同步更新才对。

后来翻阅了官网教程,看到 基础-列表渲染-数组更新检测 章节有提到,由于 JavaScript 的限制,Vue 不能检测以下变动的数组:

1.当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue

必须用全局方法 Vue.set(vm.items, indexOfItem, newValue) 或 实例方法 vm.$set(vm.items, indexOfItem, newValue) 来触发状态更新。

2.当你修改数组的长度时,例如:vm.items.length = newLength

可以使用 vm.items.splice(newLength) 。

虽然一开始学vue的时候都是看过的知识点,但是开发过程中用的少或者没碰到,就会忽视掉这些问题。因为之前在设置数组的值的同时还设置对象属性的值,vue检测到对象属性值的改变后,重新渲染视图。所以我就错误地认为设置数组的值是可以重新渲染视图的了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值