redux解決了什麼問題?

隨着 JavaScript 單頁應用開發日趨複雜,JavaScript 需要管理太多的 state (狀態)。這些 state 可能包括服務器響應、緩存數據、本地生成尚未持久化到服務器的數據,也包括 UI 狀態,如激活的路由,被選中的標籤,是否顯示加載動效或者分頁器等等。

管理不斷變化的 state 非常困難。如果一個 model 的變化會引起另一個 model 變化,那麼當 view 變化時,就可能引起對應 model 以及另一個 model 的變化,依次地,可能會引起另一個 view 的變化。直至你搞不清楚到底發生了什麼。state 在什麼時候,由於什麼原因,如何變化已然不受控制。當系統變得錯綜複雜的時候,想重現問題或者添加新功能就會變得舉步維艱。

通過限制更新發生的時間和方式,Redux 試圖讓 state 的變化變得可預測。這些限制條件反映在 Redux 的三大原則中。

Redux 可以用這三個基本原則來描述:

單一數據源 整個應用的 state 被儲存在一棵 object tree 中,並且這個 object tree 只存在於唯一一個 store中。

State 是隻讀的 唯一改變 state 的方法就是觸發 action,action 是一個用於描述已發生事件的普通對象。

使用純函數來執行修改 爲了描述 action 如何改變 state tree ,你需要編寫 reducers。

總結 應用中所有的 state 都以一個對象樹的形式儲存在一個單一的 store 中。惟一改變 state 的辦法是觸發 action,一個描述發生什麼的對象。爲了描述 action 如何改變 state 樹,你需要編寫 reducers。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章