vuex 版本爲
^2.3.1
,按照我本身的理解來整理vuex。
Vuex 是一個專爲 Vue.js 應用程序開發的狀態管理模式。它採用集中式存儲管理應用的全部組件的狀態,並以相應的規則保證狀態以一種可預測的方式發生變化。javascript
什麼是狀態?vue
狀態管理是什麼:java
具體有如下三個內容:vuex
狀態管理的三個內容是怎麼使用的呢?就須要先知道 vue 是單向數據流的方式驅動的,而後三個內容的使用實際上是下面這個循環圖,state 會顯示到 view,用戶會根據 view 上的內容進行操做,觸發 actions 而後再去影響 state(這裏先無論三個東西是哪一個先起頭的)框架
正常狀況下很好理解和使用,由於都是單向的,非黑即白,可是面對複雜的業務環境之下,單向流方式會很容易遭到破壞:異步
多個視圖依賴於同一狀態。模塊化
來自不一樣視圖的行爲須要變動同一狀態。spa
以上的這些模式很是脆弱,主要是由於多個組件之間的關係會變得很複雜,一般會致使沒法維護的代碼。
有見及此,vuex 借鑑了 Flux、Redux、和 The Elm Architecture的設計思想,將狀態管理單獨抽離出來,造成了如今的 vuex。官方也畫出了一個圖來講明 vuex 在哪裏起做用的,參看下圖:.net
這個圖是須要解釋一下的:設計
流程:
關於 getter:
關於 actions:
筆者本身的理解就是Action 至關於一把手槍,mutation 至關於裏面的子彈,靶心就是 state, 得分指示牌就是 getter 。
雖然 Vuex 能夠幫助咱們管理共享狀態,但也附帶了更多的概念和框架。這須要對短時間和長期效益進行權衡。
(commit) mutation
。總的來講就是 vuex 的狀態是存儲在 store 裏面的,要修改狀態就只能進行 mutation 的提交 commit,一旦進行提交成功,狀態被改變後,相關使用該狀態的組件也會更新狀態信息。
// 若是在模塊化構建系統中,請確保在開頭調用了 Vue.use(Vuex) const store = new Vuex.Store({ state: { count: 0 }, mutations: { // 只能經過 mutation 來進行狀態變動 increment (state) { state.count++ } } })
須要使用 es2015語法編寫 javascript
// 經過vuex 的 mutation 進行 commit store.commit('increment') // 經過store.state來獲取狀態對象 console.log(store.state.count) // -> 1
在jsrun上的樣例地址:http://jsrun.net/i2qKp
參考: