【发布时间】:2021-10-03 00:45:06
【问题描述】:
我来自使用 react-saga 的背景,它具有“效果”的概念,它允许我们触发动作处理程序以响应调度的 Redux 动作:
take('MY_ACTION', myActionHandler)
我将如何使用 redux-thunk 做同样的事情?
【问题讨论】:
标签: reactjs redux redux-saga redux-thunk
我来自使用 react-saga 的背景,它具有“效果”的概念,它允许我们触发动作处理程序以响应调度的 Redux 动作:
take('MY_ACTION', myActionHandler)
我将如何使用 redux-thunk 做同样的事情?
【问题讨论】:
标签: reactjs redux redux-saga redux-thunk
redux-thunk 与redux-saga 的概念有点不同。它是一个简单的中间件,允许您将操作创建为可以异步运行的函数(而不是对象)(默认情况下,redux 流程是同步的)。
因此,例如,您可以轻松地在 thunk 中进行一些异步 api 调用,并在完成后调度具有 api 调用结果的最终操作对象。
就是这样,没有像redux-saga 那样订阅其他 redux 操作的概念。您可以做的是将您的处理程序逻辑添加到调度您的操作的同一位置,但如果有多个这样的位置,则可能会导致问题。
其他解决方案(如果您不想使用 redux-saga)可能是编写自定义中间件来拦截和处理特定操作。
【讨论】:
首先你不会发送MY_ACTION,但你会直接发送你的thunk。
Thunk 没有触发动作,它们是动作。
【讨论】: