[英]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.