千家信息网

vue2.0响应式编程实例分析

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇内容介绍了"vue2.0响应式编程实例分析"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!vue2
千家信息网最后更新 2024年09月22日vue2.0响应式编程实例分析

本篇内容介绍了"vue2.0响应式编程实例分析"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

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;

})()

"vue2.0响应式编程实例分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0