Javascript 在redux中,当编写Thunk以发送时,什么';这两者之间的区别是什么;“下一步”;及;“存储、发送”吗;?

Javascript 在redux中,当编写Thunk以发送时,什么';这两者之间的区别是什么;“下一步”;及;“存储、发送”吗;?,javascript,reactjs,redux,redux-thunk,Javascript,Reactjs,Redux,Redux Thunk,在视频课程中:我们学习编写自己的Thunk,以便在action creator中进行异步和多个调度调用。我大部分都理解这一点 但是,我不明白为什么我们在thunk中使用了store.dispatch而不是next: const thunk = (store) => (next) => (action) => typeof action === 'function' ? action(store.dispatch) : next(action); 为什么要使

在视频课程中:我们学习编写自己的Thunk,以便在action creator中进行异步和多个调度调用。我大部分都理解这一点

但是,我不明白为什么我们在thunk中使用了
store.dispatch
而不是
next

const thunk = (store) => (next) => (action) =>
  typeof action === 'function' ?
    action(store.dispatch) :
    next(action);

为什么要使用
next
而不是
store.dispatch
,反之亦然?我知道
next
会发展到下一个中间件,但如果下一个中间件最终也会调用dispatch,为什么我会使用
store.dispatch
over
next

正如您已经指出的,
next
只调用链中的下一个中间件。虽然它最终会调用原始的分派函数,但当您想再次遍历整个链时,使用它是不合适的。对于thunks,您希望遍历整个链

因此,如果您正在创建一个中间件,您希望在其中执行一些工作,然后继续执行整个过程,请使用
next
。例如,记录器执行以下操作:它记录操作,调用
next
,然后记录结果状态。要返回将遍历整个链的回调,请返回
store.dispatch
。您似乎不太可能希望从中间件返回
next
,因为您可能会假设您不知道哪些中间件在当前中间件之前和之后,因此在中间件链之外调用它的结果是不可预测的