02-mini-vue effect 返回 runner
·
实现 effect 返回 runner
-
runner 功能:
- 执行 runner 方法就会执行传入的 fn 函数
- 返回值是 fn 函数的返回值
-
实现代码
class ReactiveEffect {
private _fn: any;
constructor(fn) {
this._fn = fn
}
run() {
activeEffect = this
return this._fn()
}
}
let activeEffect
export function effect(fn) {
// fn
const _effect = new ReactiveEffect(fn)
_effect.run()
return _effect.run.bind(_effect)
}
- 测试代码
it("should return runner", () => {
// runner 方法: effect返回一个 runner 方法,执行 runner 方法就会执行传入的 fn 函数,返回值是 fn 函数的返回值
let foo = 1;
const runner = effect(() => {
foo++;
return "foo";
});
expect(foo).toBe(2);
const r = runner();
expect(foo).toBe(3);
expect(r).toBe("foo");
});
更多推荐
所有评论(0)