1. 程式人生 > >狀態管理

狀態管理

技術分享 異步 發現 工具 單向 由於 自己的 data- 產生

說到狀態管理,本質上就是把整個應用抽象為下圖中的循環。臉書最早提出 Flux 這個概念的時,也是一個很松散的概念,而且官方的實現本身做得很難用。所以,社區就做了各種各樣的探索。圖中的這三個東西是一個單向數據流,State 驅動 View 的渲染,而用戶對 View 進行操作產生 Action,會使State產生變化,從而導致 View 重新渲染。

技術分享

一個單獨的Vue的組件,其實就已經是這樣的結構。但是當多個這樣的組件來配套的時候,就會遇到一個問題。每個組件都有它自己的狀態,但整個應用的狀態,跟組件之間並不一定存在一一對應的關系。這個狀態可能是一個全局狀態。那麽狀態到底放在哪裏?大部分解決方案是把這個狀態從組件樹中提取出來,放在一個全局的 Store 裏面。Vuex 也是這樣做的,但是它是針對 Vue 做了特化。我們看到最左邊就是Vue的組件,這些組件在大部分情況下,就不再有私有的狀態,而是從全局的 Store 裏面獲取狀態。Actions 和 Mutations 比較難用一兩句話說清楚,大致就是當應用狀態進行改變的時候,需要通過 Mutations 去顯式地觸發,而 Actions 則是負責異步和其他副作用。由於 Mutations 會被記錄下來,我們可以把這些記錄發到工具裏面去做分析,甚至進行回滾。當發現bug的時候,這使得我們可以更好地理解大型應用中的狀態變化。更多的細節,還請看官方文檔(vuex.vuejs.org)。

技術分享

狀態管理