首页前端开发HTMLvue2.0 响应式编程分析demo

vue2.0 响应式编程分析demo

时间2024-05-08 20:12:03发布访客分类HTML浏览64
导读:vue2.0 使用了 Object.defineProterty 将data中的属性遍历并转化为getter 和 setter, 并且在getter中将使用数据的上下文进行一次收集,我们称之为依赖收集。 而在setter中就会触发依赖更新...
vue2.0 使用了 Object.defineProterty 将data中的属性遍历并转化为getter 和 setter, 并且在getter中将使用数据的上下文进行一次收集,我们称之为依赖收集。 而在setter中就会触发依赖更新的操作,让在模板中可能会有多处随该依赖变化,所以我们将所有地方都收集起来,等待更新的时候进行一次批量操作。 下面是demo演示 (function () { let x; let y; let f = n => n * 100 + 200; let active; let onXChanged = function (cb) { active = cb; active(); active = null; } // 收集更多依赖 class Dep { // 依赖收集,将响应依赖添加到deps中 constructor() { this.deps = new Set(); } depend() { if (active) { this.deps.add(active) } } // 对当前deps中依赖一次执行 notify() { this.deps.forEach(dep => dep()) } } let ref = initValue => { let value = initValue; let dep = new Dep(); return Object.defineProperty({ } , "value", { get() { dep.depend(); return value; } , set(newValue) { value = newValue; dep.notify() } } ) } x = ref(1); onXChanged(() => { y = f(x.value); console.log(y); } ); x.value = 2; x.value = 3; } )()

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: vue2.0 响应式编程分析demo
本文地址: https://pptw.com/jishu/655739.html
Vue3.0API介绍中 readonly 使用示例 Vue3.0API介绍中 isProxy,isReactive使用示例

游客 回复需填写必要信息