Redux的簡單概念介紹

banq發表於2016-08-10
Redux是遵循只儲存應用的真相單一來源的原則設計的,如果你瞭解後端EventSourcing原理,應該知道兩者都是遵循這一原則設計的,對於Redux每個動作啟用一個reducer,reducer產生新的狀態並儲存。如下圖:

[img index=1]

在Redux中, 每個應用狀態都儲存在全域性狀態,這個全域性狀態是不可變的,能夠由View Provider透過邏輯訪問,當使用者觸發一個互動,比如滑鼠點按,這將觸發一個動作Action到系統,這是透過使用一個被傳遞給View Provider回撥函式實現的,這個動作action將被Redux的儲存獲取, 透過其中介軟體觸發一系列轉換,最後傳遞給一系列有前後順序的reducer,透過reducer修改全域性狀態。

Redux核心概念是:
儲存store,
action動作
修改狀態的reducer函式

前面兩個比較容易理解,我們看看reducer函式:
reducer是一個用於狀態切換的純函式,能夠獲得當前狀態和當前動作action作為其輸入,輸出則是下一個狀態,很重要概念是reducer是純函式,沒有副作用,每次你提供同樣輸入,你總是獲得同樣的輸出。

如果只有一個reducer是不可能針對每個動作action管理整個狀態切換的,而是透過多個reducer以及相互組合實現這點的。每個action對應一個reducer,同時還有一個組合reducer管理這些子reducer:當一個action進來時,組合reducer首先獲取這個動作然後傳遞這個動作給每個小的子reducer函式,每個小的子reducer函式會檢查這個動作,決定是否修改對應的應用狀態中的一部分,如果修改了,就是產生新狀態。

相關文章