什么时候应该使用Redux Saga代替Redux Thunk,什么时候应该使用Redux Thunk代替Redux Saga?

Bon*_*ina 4 reactjs redux-thunk redux-saga react-redux

问题与过去不同,这就是为什么。这个问题是何时。由于两者本身都是好的框架,问题是我什么时候应该使用传奇而不是传奇。因为我的一位朋友一直坚持要求我在我们的应用中使用传奇,但没有明显的原因。提前谢谢

小智 9

喜欢传奇而不是 thunk 或相反的谎言取决于手头的任务。两者都有公平的权衡。

Thunk 分派一个函数,该函数又分派一个动作。所以,

  • 优点:维护简单的代码
  • 缺点:必须在测试用例中模拟 thunk 的异步行为,这可能会变得非常笨拙
  • 暗示:适用于应用程序的小而直接的异步部分

Sagas 在下面使用生成器函数,因此该函数实际上会在异步操作处暂停并在解决时恢复

  • 优点:测试用例变得公平和直接,无需模拟异步行为
  • 缺点:增加了代码的复杂性
  • 暗示:适用于需要复杂单元测试用例的应用程序的复杂异步部分


Nor*_*Ste 7

根据一些阅读和我的经验...

使用Thunk而不是Saga来完成简单而琐碎的任务,例如:

  • AJAX通话
  • 数据轮询,并且仅在用户交互直接启动时进行。

使用佐贺

  • 任务交织在一起,文档的登录示例非常完美
  • 具有很多步骤并等待其他条件发生的流程(“有限状态机”流程)
  • 在后台工作并且独立于用户交互(或后台/交互的混合)进行的任务

  • 这篇文章完全回答了这个问题:/sf/ask/5065223201/ (2认同)

Uma*_*ooq 6

两个 thunk 都是 saga 用作 redux 的中间件,通常用于 api 命中。与 saga 相比,thunk 非常容易使用,但是 saga 比 thunk 有很多好处,例如 saga 有效果takeLatest,如果用户反复按下按钮会很有效,thunk 会使每次点击都点击 api,但只使用最新的 saga 效果(一个) api 命中。它还有其他效果和好处,但它有学习开销