React+Redux+中介軟體

Jsp發表於2018-06-04

MVVM是Model-View-ViewModel的縮寫。mvvm是一種設計思想。Model 層代表資料模型,也可以在Model中定義資料修改和操作的業務邏輯;View 代表UI 元件,它負責將資料模型轉化成UI 展現出來,ViewModel 是一個同步View 和 Model的物件。

在MVVM架構下,View 和 Model 之間並沒有直接的聯絡,而是通過ViewModel進行互動,Model 和 ViewModel 之間的互動是雙向的, 因此View 資料的變化會同步到Model中,而Model 資料的變化也會立即反應到View 上。

ViewModel 通過雙向資料繫結把 View 層和 Model 層連線了起來,而View 和 Model 之間的同步工作完全是自動的,無需人為干涉,因此開發者只需關注業務邏輯,不需要手動操作DOM, 不需要關注資料狀態的同步問題,複雜的資料狀態維護完全由 MVVM 來統一管理。

一:React生命週期

React+Redux+中介軟體

二:Redux工作流程

React+Redux+中介軟體

三:中介軟體

非同步操作怎麼辦?Action 發出以後,Reducer 立即算出 State,這叫做同步;Action 發出以後,過一段時間再執行 Reducer,這就是非同步。怎麼才能 Reducer 在非同步操作結束後自動執行呢?這就要用到新的工具:中介軟體(middleware)。

(1)Reducer:純函式,只承擔計算 State 的功能,不合適承擔其他功能,也承擔不了,因為理論上,純函式不能進行讀寫操作。

(2)View:與 State 一一對應,可以看作 State 的視覺層,也不合適承擔其他功能。

(3)Action:存放資料的物件,即訊息的載體,只能被別人操作,自己不能進行任何操作。

只有傳送 Action 的這個步驟,即store.dispatch()方法,可以新增功能。舉例來說,要新增日誌功能,把 Action 和 State 列印出來,可以對store.dispatch進行如下改造。

中介軟體就是一個函式,對store.dispatch方法進行了改造,在發出 Action 和執行 Reducer 這兩步之間,新增了其他功能。

同步操作只要發出一種 Action 即可,非同步操作的差別是它要發出三種 Action:

  • 操作發起時的action
  • 操作成功的action
  • 操作失敗時的action

四:其他

redux-thunk 中介軟體

redux-promise 中介軟體


相關文章