- 博客(5)
- 收藏
- 关注
原创 响应系统的作用与实现
这里effect允许第二个传参options,options对象上加一个schedule调度函数,将options挂载到对应的副作用函数上, trigger触发副作用函数时先判断是否有schedule调度函数,如果有则执行调度函数。响应式数据修改后就会立即触发副作用函数,但有些场景下,并不希望它立即执行,而是希望它在需要的时候才执行,例如计算属性。这样就做到了懒计算,但并没有实现计算结果的缓存,每次去取fn.value的值时,都会触发副作用函数的计算,但值其实并没有变,所以要对值进行缓存。
2025-11-03 22:29:16
325
原创 4.5嵌套的effect与effect栈
name期望执行的副作用函数effectFn1,age期望执行的副作用函数为effectFn2,而结果执行后的结果是 name与age收集副作用函数均为effectFn2。这是为什么,并且此时如果再修改name,先执行cleanup函数,从set中删除副作用函数effectFn2,在执行effectFn2触发收集,这时只会触发age的收集。副作用函数发生嵌套时,内层的会覆盖外层的,并且不会恢复到原来的值,这时外层的去响应式数据再去依赖收集,收集到的就会使内层的副作用函数。自己加的戏不是书上的,别被我误导。
2025-11-02 22:10:08
207
原创 vue3的响应式数据与副作用函数
虽然学生状态已经改为退学,但是age和text两个属性收集的副作用函数依然存在,修改两个属性值时,依然会触发副作用函数,尽管有if判断,但这两个属性本质上已经不需要响应,这里就需要将 收集了副作用函数的 set集合,存在副作用函数上,执行副作用函数的时候,先删除,在收集,这里 isExit 为true 时,age和text两属性修改,不再会触发副作用函数,而 isExit改为false,获取属性值的时候会触发get方法,收集属性对应的副作用函数进入set集合中,设置属性时再读取属性的副作用函数执行。
2025-11-01 12:59:25
323
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅