gpt4 book ai didi

javascript - 在 redux 中编写 thunks 进行调度时, "next"和 "store.dispatch"之间有什么区别?

转载 作者:行者123 更新时间:2023-11-29 19:11:42 24 4
gpt4 key购买 nike

在视频类(class)中:https://egghead.io/lessons/javascript-redux-dispatching-actions-asynchronously-with-thunks我们学习编写自己的 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 而不是 next

最佳答案

正如您已经指出的,next 仅调用链中的下一个中间件。虽然它最终确实调用了原来的dispatch函数,但是当你想再次遍历整个链时使用它是不合适的。在 thunk 的情况下,您想遍历整个链。

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

关于javascript - 在 redux 中编写 thunks 进行调度时, "next"和 "store.dispatch"之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38382124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com