[英]In redux when writing thunks for dispatch, what's the difference between “next” and “store.dispatch”?
在视频课程中: https : //egghead.io/lessons/javascript-redux-dispatching-actions-asynchronously-with-thunks我们学习编写自己的thunk,以便我们可以在动作创建者中进行异步和多个调用调度。 我大部分都了解这一点。
但是,我对为什么我们在store.dispatch
使用store.dispatch
而不是next
感到困惑:
const thunk = (store) => (next) => (action) =>
typeof action === 'function' ?
action(store.dispatch) :
next(action);
为什么要使用next
而不是store.dispatch
,反之亦然? 我知道next
前进到下一个中间件,但是如果下一个中间件最终也调用了dispatch,我为什么要在next
使用store.dispatch
?
正如您已经指出的, next
仅调用链中的下一个中间件。 尽管它最终会调用原始的调度函数,但是当您想再次遍历整个链时,不宜使用它。 如果是重音,则要遍历整个链。
因此,如果您要创建一个中间件来完成一些工作,然后继续进行next
工作,请使用next
。 例如,记录器执行此操作:它记录操作,调用next
,然后记录结果状态。 要返回遍历整个链的回调,请返回store.dispatch
。 您似乎不太可能想要从中间件返回next
一个,因为您可能会假设您不知道哪个中间件在当前中间件之前和之后出现,因此在中间件链之外调用它的结果是不可预测的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.