redux传奇让我很困惑。因此,无论我看的是哪篇文章,他们都解释说它在那里可以解决redux和异步调用的副作用,甚至他们也可以解释saga和thunk的区别,但它们都令人困惑。 他们没有解释为什么我应该完全使用佐贺?如果我让异步调用等待它然后更新redux状态,那有什么问题。
我需要的是一个简单明了的解释,说明为什么以及在什么情况下需要使用redux saga或thunk?
我要说的是如果我不使用saga,那么如果我单击1000次,我的代码将运行异步代码并等待结果1000次,但是使用saga,我可以控制它或者并行运行(分叉)还是只运行最后一个?
答案 0 :(得分:1)
因此,对于需要更改redux存储的任何操作(而不是 组件状态),并且是异步的,因此最好使用thunk或saga 但我们不必这样做,如果不使用它仍然有效。对吧?
首先,redux-saga或redux-thunk是建立在javadocs之上的库,用于处理与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已经拥有Redux's middleware,还有更多用于解决其他常见的异步问题。