Vue 响应式原理

将data与dom绑定的原理

首先引用官网的一张图

要将data与dom绑定,首先要满足一下几点
1、Vue实例内预先定义了data(及时该值为”“也要预先定义)
2、使用Vue.set(object, key, value)或者vm.$set(object, key, value)方法设置了data

因为Vue实例创建的时候,Vue将遍历data内的所有对象并使用 Object.defineProperty 把这些属性全部转为 getter/setter。当data的属性值被改变,会触发对应的setter方法,通知watcher重新计算,所有关联的组件就会被更新。

ps:如果Vue实例内data的对象是个数组,进行添加和删除数组的内容不会触发setter更新组件,因为新旧数据指向同一个地址。此时可以创建一个新的对象重新赋值就能触发。

Vue异步更新队列

Vue 异步执行 DOM 更新需要注意以下几点:
1、当更新数据后,Vue将开启一个队列,并且同一个watcher多次触发,只会进入队列一次。
2、当更新数据后,下一行代码使用vm.$nextTick(function(){}),当更新dom成功后,会执行这个回调函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值