本篇内容主要讲解“effect返回runner单测怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“effect返回runner单测怎么实现”吧!一、 runner 单测首先介绍一下runn
本篇内容主要讲解“effect返回runner单测怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“effect返回runner单测怎么实现”吧!
首先介绍一下runner
的功能,分以下几点:
effect(fn)
执行会返回一个runner
函数;
执行runner
,相当于重新执行一遍effect
里面传入的fn
(原始依赖);
最后runner
的返回值就是fn
的返回值。
至于runner
的作用,可以看做是对外暴露ReactiveEffect
实例的run
方法。
一方面是为了可以手动调用触发依赖;
另一方面,也是为了和stop
结合使用,来手动控制响应式的生效与失效;
具体点就是:使用者可以手动执行runner()
来控制副作用函数
的生效 和 执行stop(runner)
也就是runner.effect.stop()
使之失效,具体stop
的实现实现后面再说。
还是先来看一下单测吧,单测用例如下:
it('runner', function () { // effect(fn) -> return runner -> runner() == fn() -> return let foo = 10; const runner = effect(() => { foo++; return 'foo'; }); expect(foo).toBe(11); const r = runner(); expect(foo).toBe(12); expect(r).toBe('foo');});
// + 为新增加的代码。
class ReactiveEffect { private _fn: any; constructor(fn) { this._fn = fn; } run() { activeEffect = this; // + 返回fn的返回值 return this._fn(); }}export function effect(fn) { const _effect = new ReactiveEffect(fn); _effect.run(); // + 涉及到run()中this指向的问题,所以需要bind处理一下。 return _effect.run.bind(_effect);}
具体实现较为简单,上述代码中也有相应注释,这里就不再赘述了。
再次完整跑一遍effect单测,保证新功能的增加对以往实现功能不造成影响。
单测结果如下:
到此,相信大家对“effect返回runner单测怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
--结束END--
本文标题: effect返回runner单测怎么实现
本文链接: https://lsjlt.com/news/346711.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0