Vue中数据响应式的原理分析


这篇文章主要介绍“Vue中数据响应式的原理分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue中数据响应式的原理分析”文章能帮助大家解决问题。改造数据我们先来尝试写一个函数,用于改造对象:为什么要先写这个函数呢? 因为改造数据是一个最基础也是最重要的步骤,之后所有的步骤都会依赖这一步。例如const obj = {},然后再调用defineReactive(obj,’a’,2)方法,此时在函数内,val=2,然后每次获取obj.a的值的时候都是获取val的值,设置obj.a的时候也是设置val的值。(每次调用defineReactive都会产生一个闭包保存了val的值);
流程讨论经过验证之后,发现这个函数确实可以使用的。然后我们来讨论一下响应的流程:输入数据改造数据(defineReactive())如果数据变动 => 触发事件我们来看第三步,数据变动如何触发之后的事件呢?仔细思考一下,如果要改变数据,那么必须先set数据,那么我们直接set()里面添加方法就ok了呀。
然后还有一个重要问题:依赖收集我们怎么知道数据改变之后要触发的是什么事件呢?在Vue中:
使用数据 => 视图; 使用了数据来渲染视图,那么在获取数据的时候收集依赖是最佳的时机,Vue在改造数据属性的时候生成一个Dep实例,用于收集依赖。
代码1.2就是Dep的部分代码,暂时只需要知道2个方法的作用就可以了depend() — 可以理解为收集依赖的事件,不考虑其他方面的话 功能等同于addSub()notify() — 这个方法更为直观了,执行所有依赖的update()方法。就是之后的改变视图啊 等等。本篇主要讨论数据响应的过程,不深入讨论 Watcher类,所以Dep中的方法知道作用就可以了。然后就是改变代码1.1了
这代码中有一个疑点,Dep.target是什么?为什么要有Dep.target才会收集依赖呢?Dep是一个类,Dep.target是类的属性,并不是dep实例的属性。Dep类在全局可用,所以Dep.target在全局能访问到,可以任意改变它的值。get这个方法使用很平常,不可能每次使用获取数据值的时候都去调用dep.depend()。dep.depend()实际上就是dep.addSub(Dep.target)。那么最好方法就是,在使用之前把Dep.target设置成某个对象,在订阅完成之后设置Dep.target = null。验证是时候来验证一波代码的可用性了
此时浏览器上的界面是这样的然后在下打开了控制台开始调试,输入:
然后就发现,按下回车的那一瞬间,奇迹发生了,页面变成了关于“Vue中数据响应式的原理分析”的内容就介绍到这里了,感谢大家的阅读。如果想 香港云主机了解更多行业相关的知识,可以关注开发云行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: 笔记本电脑怎么设置锁屏密码

这篇文章主要介绍了笔记本电脑怎么设置锁屏密码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、先打开控制面板,并直接选择帐户。2、然后可以直接点击“为您的帐户创建密码”,并设置好密码。3、接着可…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 07/16 09:32
下一篇 07/16 09:32

相关推荐