Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redux 雷迪克斯传奇,可观察到。对于香草提取调用,为什么需要thunks?_Redux_Redux Saga_Redux Observable - Fatal编程技术网

Redux 雷迪克斯传奇,可观察到。对于香草提取调用,为什么需要thunks?

Redux 雷迪克斯传奇,可观察到。对于香草提取调用,为什么需要thunks?,redux,redux-saga,redux-observable,Redux,Redux Saga,Redux Observable,我一直在读有关传奇、它们的意图和用法的书。但是-我有两个问题,我真的想结束一下,然后更多的是一个意见问题 当使用Sagas进行简单的api调用时,样板文件似乎太多了。如果我有20个api调用,那怎么会比使用thunks少用呢?另外,我一直听到“副作用”的想法,但我不确定这是怎么回事 我读过一些博客,它们使用了一种能够动态生成传奇故事的模式,以减少样板文件——但你不能用thunks也这样做吗?还有,任何例子都会很好 在处理非常简单的post或get呼叫时,Sagas仍然有用吗 对redux凹陷和

我一直在读有关传奇、它们的意图和用法的书。但是-我有两个问题,我真的想结束一下,然后更多的是一个意见问题

  • 当使用Sagas进行简单的api调用时,样板文件似乎太多了。如果我有20个api调用,那怎么会比使用thunks少用呢?另外,我一直听到“副作用”的想法,但我不确定这是怎么回事 我读过一些博客,它们使用了一种能够动态生成传奇故事的模式,以减少样板文件——但你不能用thunks也这样做吗?还有,任何例子都会很好

  • 在处理非常简单的post或get呼叫时,Sagas仍然有用吗

  • 对redux凹陷和redux可观测值有什么看法


    谢谢

    免责声明:我是redux observable的作者之一,因此我对redux传奇和redux observable的看法都带有偏见

    由于您使用了术语Saga(而不是Epic),我假设您是在redux Saga(不可观察redux)的上下文中提问的

    在redux传奇中,您所做的效果(例如AJAX请求)实际上并不是在生成器传奇中直接处理的。相反,您使用的助手正在创建普通的旧JavaScript对象,这些对象表示效果intent,您可以
    yield
    ,然后redux saga中间件本身在内部执行效果,对您隐藏,将结果返回到yield,如
    yourSaga.next(response)

    有些人喜欢这样,因为你的传奇发电机是真正纯粹的。因为它使用生成器来支持多个效果,所以在没有模拟的情况下很容易进行测试,因为您只需断言它产生的效果是预期的。就我个人而言,我发现在实践中,这似乎比实际情况要酷得多:很多时候,你最终有效地重现了测试中传奇所做的一切。您现在正在测试saga的实现是否正确,而不是测试saga的行为。很多人不在乎(甚至没注意到),但我在乎。我想有些人甚至更喜欢它。这被称为“作为数据的效果”。FWIW,redux observable没有使用这种“作为数据的效果”模型,这是它和redux传奇之间最根本的区别

    与redux thunk相比,最大的区别在于:基于时间的操作(例如,消除连续动作的抖动)在没有重大黑客的情况下单独使用redux thunk是不切实际的。说到去抖动,它根本没有任何实用程序,因此您需要处理去抖动和其他常见效果。测试要困难得多

    然而,这些大多是观点。当然,非常成功的应用程序可以(并且已经)使用redux thunk。我想到了

    我认为,如果说redux thunk更容易学习和用于简单的请求->响应AJAX调用,而不需要取消调用等,这一点不会引起争议。事实上,我经常建议不熟悉RxJS的用户使用redux thunk来处理简单的事情,而只使用redux observable来处理更复杂的事情,因此,他们可以保持生产力,边走边学习。学术上的“正确性”和漂亮的代码肯定有一席之地,但对于大多数人的工作来说,shipit™ 应该是#1优先。用户不在乎我们的代码有多正确,只在乎它存在并且[大部分]有效


    关于redux saga和redux observable的观点,我有偏见,因为我是redux observable的作者之一,但我在之前的SO帖子中总结了我的一些想法:tl;dr他们有一个相似的整体模式,但redux saga使用“效果作为数据”,而redux observable使用RxJS的真实效果。利与弊兼而有之,使用RxJS的主要优势在于,这是一项对redux observable以外的事物非常有用的技能,并且几乎肯定会比redux observable/redux saga更具生命力,因此该技能具有高度的可转移性