手写Vue3源码系列-响应式系统基础

45 阅读1分钟

响应式变量是什么,为什么需要响应式变量

这里直接引用官网的例子:

let A0 = 1
let A1 = 2
let A2 = A0 + A1

console.log(A2) // 3

A0 = 2
console.log(A2) // 仍然是 3

如上可知,当A0更改了值,A2并不会自动更新。

但是我们期望,无论是A0还是A1更改时,A2都能得到最新的计算值。

为了实现这一效果,我们可以将let A2 = A0 + A1这个计算步骤包装成一个函数,在Vue源码里面这个函数被称为副作用函数,其实也可以称为是A0和A1的订阅者,书写如下effect(() => {A2 = A0 + A1}),A0和A2被称为这个副作用的依赖。换句话说,当任一依赖更改时,都能自动触发副作用执行