Vue数组和对象的视图更新问题

数据改变但视图却没有更新

这里分两种情况

一、数据为数组时:

例如你的data里有一段这样的数组

arrData:[1,2,3,4,5]

这时你要添加新的数据,如果在方法里直接这样写,数据确实改了,但视图并不会更新

this.arrData[5]=6

解决方法1、

改成使用数组方法

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()
this.arrData.push(6);

同样的,如果是修改、删除操作也是像原生js一样使用数组方法就行了,但是要注意这里其实已经已经不是原生的方法了,是经过Vue封装后的方法,所以可以响应式更新视图

解决方法2、

使用Vue的静态方法

Vue.set(this.arrData,5,6);

这个方法可以添加,也可以修改。不过数组操作的话,个人比较推荐上一种方法。

解决方法3、

给整个数组重新赋值

二、数据为对象时:

数据为对象时,一般修改是可以正常更新的,但如果是添加的话就得注意了:

直接使用 对象.属性="值" 这种形式添加属性是不行的。而且这种方法添加的属性没有getter和setter,之后就算这个属性改变,视图也不会更新。

解决方法1、:

使用Vue的静态方法 Vue.set(对象,下标,值)

解决方法2、

给整个对象重新赋值(不推荐)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值