在使用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儲存的是輸出過程中日誌資訊...