![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Vue3源码
文章平均质量分 77
改行不做程序员了
这个作者很懒,什么都没留下…
展开
-
实现一个vue3相对完善的响应式系统
watch,computed 等。原创 2022-11-23 16:01:28 · 308 阅读 · 0 评论 -
Vue.js设计与实现读书笔记四 第五章 非原始值的响应式方案
(1)之前的代码,都是浅响应,例如:let obj={ test:{title:1}} 当访问obj代理 p访问属性时候,只有p.test能触发副作用函数,p.test.title不能,原因是test只是一个普通对象,(2)了解的浅响应的问题,那么我们可以在收集副作用的时候,判断属性对象是不是一个对象,如果是就递归调用,这样就实现深响应(3)深浅响应是真的属性的深度,原型是指代理对象的原型链,如果原型上的属性也是对象,那么遵循,对象属性上的规则。原创 2022-08-29 15:25:21 · 190 阅读 · 0 评论 -
Vue.js设计与实现读书笔记三 第四章响应系统的作用与实现
然后watch内部的effect 使用了lazy,不立刻执行副作用函数, 最后执行effectFn(),获得第一次的旧值,同时触发track收集副作用函数,当监听的值改变,scheduler中执行effectFn()获得新值,执行cb()然后将新值赋值给旧值,这样,下一次改变监听的数据,旧值就是上一次的新值。这个主要是watch监听的数据改变,回调函数如果是异步函数,那么每次数据改变,就会触发异步函数,但是如果确定那个异步函数的结果是我们想要的,这里让最后一个异步函数的结果为最终结果。......原创 2022-08-27 11:16:47 · 189 阅读 · 0 评论 -
Vue.js设计与实现读书笔记二 第四章 响应系统的作用与实现
响应式数据是当对象数据(设置)改变的时候,会执行读取数据的操作,原创 2022-08-25 18:08:44 · 321 阅读 · 0 评论 -
Vue.js设计与实现读书笔记五 第五章 非原始值的响应式方案
(1)主要问题是修改方法push/pop/shift/unshift 会在读取的时候会读取和设置length,如果一个reactive对象有两个effect函数,会造成,第二个修改length的时候,第一个副作用执行,然后又执行第二次副作用函数,然后就会无限循环,直到栈溢出。原因是arr[0]是个对象,所以会被变成深代理,创建一个新代理,而includes中的arr访问的元素也是一个对象,这两个对象不一样,每次使用reactive传的对象都是不一样的,即使参数相同。(3)把数组作为对象,使用for…原创 2022-11-23 14:34:17 · 220 阅读 · 0 评论