为什么要完全使用redux saga或thunk

问题描述 投票:0回答:1

我确实对redux传奇感到困惑。因此,无论我看的是哪篇文章,他们都解释说它在那里可以解决redux和异步调用的副作用,甚至他们也可以解释saga和thunk的区别,但它们都令人困惑。他们没有解释为什么我应该完全使用佐贺?如果我让异步调用等待它,然后更新redux状态,那又怎么了?

我需要一个简单清楚的解释,说明为什么以及在什么情况下需要使用redux saga或thunk?

是我要说的是,如果我不使用saga,那么如果我单击1000次,我的代码将运行异步代码并等待结果1000次,但是使用saga,我可以控制它或者并行运行(叉)或只运行最后一个?

redux react-redux redux-saga redux-thunk
1个回答
0
投票

因此,需要更改redux存储区的任何操作(而不是组件状态),并且是异步的,因此最好使用thunk或saga但我们不必这样做,如果不使用它仍然有效。对吧?

首先,redux-saga或redux-thunk是建立在Redux's middleware之上的库,用于处理与Redux主数据流无关的问题,例如: API调用,日志记录,路由。您显然可以编写自己的中间件来处理异步流,而不是使用这些库,这可能会大大减轻应用程序的大小。但是,redux-thunk尤其是redux-saga具有许多语法糖API,以处理异步流的复杂用法,例如竞速,排序API调用,根据条件取消API调用等,这减少了很多工作实现等效逻辑。

此外,当我们说redux本质上是同步流时,我们仍然可以等待进行通话,然后继续。那么与传奇或重击?

这是更多个人观点,但是我认为使用这些库的主要原因是关注点分离。使用中间件实现来处理所有异步流,我们可以在react / redux应用程序中包含3个逻辑部分:redux部分由用于同步数据流的纯函数组成; redux中间件部分(可以是redux-thunk或redux-saga)处理来自redux的所有API调用和副作用,并做出反应以处理用户与redux存储的交互和通信。这样,代码将更易于管理,并且更易于进行单元测试。

是我要说的是,如果我不使用saga,那么我点击1000次代码将冲洗asnc代码,并等待结果1000次,但是传奇我有办法控制它要么并行运行(叉)还是只运行最后一个?

同样,可以使用自我实现的redux中间件来限制除最后一次调用之外的所有调用。但是,redux-saga已具有an API for this case,还有更多其他常见的异步问题。

© www.soinside.com 2019 - 2024. All rights reserved.