解讀只有99行的Redux(二) 中介軟體相關

2021-08-19 22:24:47 字數 1332 閱讀 3243

在使用redux的時候我們可能會遇到非同步操作的問題,希望讓 reducer 在非同步操作結束後自動執行,所以我們就用了中介軟體(middleware)。

先看一下中介軟體的一般形式:

const middleware = store => reducer => next =>
在真正的redux環境中,我們一般是這樣使用中介軟體的:

const store = createstore(reducer,);

不過,因為我們現在解讀的是slim-redux,所以我們這樣使用

loggermiddleware,

confirmationmiddleware)(createstore)(reducer);

export function

compose

(...funcs)

export function

(...middlewares) ));

dispatch = compose(...chain)(store.dispatch);

return ;};}

function

(next) ;

}

遍歷結束後,chain陣列裡面每個元素都是類似上面這樣的函式。

最後使用compose函式將chain陣列裡面的每個函式元素組合起來最後傳入store.dispatch

整個呼叫過程類似下面的結構:

function

(next1)

}}

經過層層封裝,dispatch已經不是原來的dispatch。呼叫這個dispatch的時候,我們想要的功能都會在中間完成,整個呼叫過程如下圖所示:

最後解構store並返回,新的dispatch覆蓋原來的dispatch

以下是解讀只有99行的redux系列的其他兩篇文章

解讀只有99行的redux(一) 從建立乙個store開始

解讀只有99行的redux(三) 輔助函式和組合reducer

Redux筆記(二) 中介軟體的用法

redux logger的用法 import from redux import createlogger from redux logger const logger createlogger const store createstore reducer,logger const store c...

實驗二 中規模整合晶元的設計應用

一 預習報告 實驗目的 1 掌握常用 msi 的邏輯功能。2 學會用 msi 設計組合邏輯電路。實驗原理 二進位制解碼器能把輸入變數的所有狀態都翻譯出來送到輸出端,它的每乙個輸出訊號都對應一種輸入 狀態,也就是輸入變數的乙個最小項。因此從實現組合邏輯函式的角度看,二進位制解碼器的輸出端提供了其輸入變...

簡易中文自動文摘系統(二) 中文語料庫的準備

bzcat zhwiki latest pages articles.xml.bz2 python wikiextractor.py b 1000m o extracted output.txt其中 b 1000m是將文字以1000m大小為單位進行分割 output.txt儲存的是輸出過程中日誌資訊...