美文网首页
实现 effect 返回 runner

实现 effect 返回 runner

作者: sweetBoy_9126 | 来源:发表于2023-08-11 14:11 被阅读0次
  • effect.spec.ts
  it("should return runner when call effect", () => {
    let foo = 10
    const runner = effect(() => {
      foo++
      return "foo"
    })
    expect(foo).toBe(11)
    const r = runner()
    expect(foo).toBe(12)
    expect(r).toBe("foo")
  })
  • effect.ts
class ReactiveEffect {
  private _fn: any;
  constructor(fn) {
    this._fn = fn
  }
  run() {
    // 把实例对象赋值给 activeEffect
    activeEffect = this
+    return this._fn()
  }
}
export function effect(fn) {
  const _effect = new ReactiveEffect(fn)
 _effect.run()
+ return _effect.run.bind(_effect)
}

相关文章

网友评论

      本文标题:实现 effect 返回 runner

      本文链接:https://www.haomeiwen.com/subject/bojtmdtx.html