我应该使用Redux Sagas吗?

时间:2018-04-17 14:34:42

标签: reactjs redux react-redux redux-saga

我还是相当新的Redux没有使用Redux Sagas,所以我不确定这是开始使用Sagas的好情况。我有一个调用Web API的Redux操作,在获得结果后,可能需要从其他1-20 API中获取数据。

我的第一反应是用异步等待做一个大的Redux动作,但它确实感觉有更好的方法。 Redux Saga是我需要研究的吗?

3 个答案:

答案 0 :(得分:3)

大多数项目都使用Redux Thunk来组织副作用。从原则上讲,它可以带来良好的效果:易于阅读和测试代码(但您仍然需要模拟网络请求)。但是就动作创建者(或重击者)的逻辑而言,这一切都是公平的。不幸的是,对于不止几个功能,代码变得更加难以阅读,这使得测试变得更加困难。

在这种情况下,Redux Saga进行了救援。 Redux Saga是组织副作用的另一种方法。无需调度Redux Thunk处理的功能,而是创建传奇并编写事件流处理的所有逻辑。与在您分发它们时执行的重击不同,在应用启动后,sagas在后台运行。 Sagas会观察商店分发的所有操作并决定如何处理。

这时,我们可以分配sagas的三个主要好处:

  • 组织困难的副作用序列很简单;
  • 声明式样式;
  • 测试的简便性。

如果您想知道如何将传奇付诸实践,请查看我们的文章:https://blog.s-pro.io/use-redux-saga/,您将在其中找到代码示例以及更多内容!

答案 1 :(得分:2)

您可能想查看Redux Thunk。这是异步Redux操作的一种非常明智且易于理解的方法。

答案 2 :(得分:0)

与redux thunk相比,sagas给你带来了一些好处:

  • 等待行动的能力 - (适合:更好 解耦模块,编写复杂的异步流,拥有所有 您的操作通过redux logger记录,...)
  • 易于测试
  • 写异步。代码类似于同步(与async / await相同,但目前有更好的浏览器支持)
  • 任务取消(原生承诺不支持取消)

如果你发现自己并不特别需要这些,那么可能更容易使用可能有一些像蓝鸟这样的承诺库的thunk。

那说Redux Sagas很棒,但如果你刚刚开始使用redux,最好先坚持使用更简单的解决方案,一旦你开始探索像redux sagas这样的库,你会感觉很舒服。