vue响应式原理学习

vue2和vue3的响应式有一点不同的。
vue 2:
当new一个vue实例时,vue会为每一个data使用Object.defineProperty定义getter和setter,每一个组件都会有一个watcher实例,watcher会收集getter为依赖,然后渲染每个组件形成虚拟DOM,当data数据修改后会触发setter,setter会通知Watcher,然后重新渲染与之有关的组件。
在这里插入图片描述
缺点:不能检测数组和对象的变化
对于对象:无法根据对象属性的变化重新渲染界面,此时需要使用this.$set(对象,属性名,值)方法
对于数组:无法利用索引直接设置一个数组项,可以使用$set方法
无法直接修改数组的长度,此时得使用:splice()方法
vue3:
vue3和vue2的响应式的区别是:vue3使用了proxy,而vue2使用的是defineProperty。
这样的好处是在vue2里的对象和数组里不能响应的问题就被解决了。
相对于vue2,vue3使用了新的api:ref,reactive

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值