修改数据页面不更新的原因和解决方案

在项目中,我们有时会遇到我们修改了一个数据,但是视图并不会更新的情况,比如我们在做一个简单的购物车,请求过来的数据没有数量这个属性,于是我们像给这个对象添加一个count属性来表示数量:

goods.count = 1;

然后我们用计步器增加或减少这个数量时,发现视图并不会发生改变,但是我们console.log(count)却发现count时变化的,没有问题,这是为什么呢?

这里要vue的一些底层原理,vue之所以能够做到双向数据绑定,靠的是Object.defineProperty()方法,vue使用Oberver对data中的数据进行数据劫持,时其拥有get和set方法,但是我们通过goods.count = 1;这种方式添加的属性不会被劫持,也就没有get和set方法,视图当然也就无法更新

想要解决这个问题,有如下几种方法:

Vue.set:

Vue.set(vm.obj, propertyName, newValue)

Object.assign:

this.obj = Object.assign({}, this.obj, { a: 1, b: 2 })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值