現在用React
或者vue
開發單頁應用愈來愈廣泛。當項目愈來愈大,管理不斷變化的state愈來愈困難。可能散落在各處。須要一個統一的容器來管理各類state
。Redux
是 JavaScript
狀態容器。 它和react
和vue
無直接關係。只是恰好二者能夠結合起來發揮不錯的。vue
Redux 能夠用這三個基本原則來描述:react
整個應用的 state
被儲存在一棵 object tree 中,而且這個 object tree 只存在於惟一一個 store
中redux
唯一改變 state 的方法就是觸發 action,action 是一個用於描述已發生事件的普通對象。app
爲了描述 action
如何改變 state
tree ,你須要編寫 reducers
。函數
Reducer
只是一些純函數,它接收先前的 state
和 action
,並返回新的 state
。剛開始你能夠只有一個 reducer
,隨着應用變大,你能夠把它拆成多個小的 reducers
,分別獨立地操做 state
tree 的不一樣部分,由於 reducer
只是函數,你能夠控制它們被調用的順序,傳入附加數據,甚至編寫可複用的 reducer
來處理一些通用任務,如分頁器。spa
Redux
的 API 很是少。code
記住,Redux
只關心如何管理 state
。在實際的項目中,你還須要使用 UI 綁定庫如 react-redux
。實際上就是幫你處理了state
變化時的監聽中間件
產生store
對象
把多個小reducers組合成一個reducer事件
action中間件
產生能夠不用dispatch的action (感受用處並不大)
把多箇中間件組合在一塊兒