非同步資料流
不使用 middleware 的話,Redux 的 store 只支援同步資料流。 這就是你使用 createStore()
預設會拿到的。
你可以用 applyMiddleware()
來加強 createStore()
。這不是必須的,不過這讓你用比較方便的方式來表達非同步的 action。
非同步的 middleware 像是 redux-thunk 或是 redux-promise 都包裝了 store 的 dispatch()
方法,並允許你 dispatch 一些 action 以外的東西,例如:function 或 Promise。你使用的任何 middleware 可以接著解譯你 dispatch 的任何東西,並轉而傳遞 action 到下一個鏈中的 middleware。例如,Promise middleware 可以攔截 Promise,並針對每一個 Promise 非同步的 dispatch 一對的開始/結束 action。
當最後一個在鏈中的 middleware 要 dispatch action 時,action 必須是個一般物件。這就是同步的 Redux 資料流開始的地方。
請查看非同步範例完整的原始碼。
下一步
現在你已經看過一個 middleware 在 Redux 中可以做到什麼的範例了,是時候來學習它實際上如何運作,還有你可以如何建立你自己的 middleware。前進到下一個章節有 Middleware 相關的詳細內容。