?
This document uses PHP Chinese website manual Release
所有 Vuex 應(yīng)用的中心就是 store(狀態(tài)存儲)?!眘tore” 本質(zhì)上是一個保存應(yīng)用狀態(tài)的容器。這里有兩件要點,讓 Vuex store 區(qū)別于普通全局對象:
Vuex store 是響應(yīng)式的。當(dāng) Vue 組件從 store 讀取狀態(tài),如果 store 中的狀態(tài)更新,它們也會高效地響應(yīng)更新。
你不能直接更改 store 中的狀態(tài)。更改狀態(tài)的唯一的方法就是顯式 提交更改 (committing mutations)。這樣可以確保每次狀態(tài)更改都留有可追蹤的記錄,并且可以使用工具幫助我們更好地理解我們的應(yīng)用。
NOTE: 我們將會在以后的示例代碼中使用 ES2015 語法。如果你還沒有用過,你應(yīng)該看看!
安裝 Vuex 之后,我們來創(chuàng)建一個 store。這是一個非常易懂的例子 - 只含有一個初始化狀態(tài)對象,以及一些更改:
// 如果使用模塊系統(tǒng),確保之前調(diào)用過 Vue.use(Vuex) const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment (state) { state.count++ } } })
現(xiàn)在,你可以通過 store.state
訪問狀態(tài)對象,以及通過 store.commit
觸發(fā)狀態(tài)的更改:
store.commit('increment') console.log(store.state.count) // -> 1
再次說明,我們提交 mutation 而不是直接更改 store.state.count
,是想要顯式地追蹤它。這個簡單的轉(zhuǎn)換使你的意圖更加明顯。當(dāng)你閱讀代碼時,可以更好地了解應(yīng)用中的狀態(tài)更改。另外,這也讓我們有機會去實現(xiàn)一些工具,記錄修改日志、保存狀態(tài)快照、甚至是進(jìn)行基于時間軸的調(diào)試。
因為 store 的狀態(tài)是響應(yīng)式的,要在組件中使用 store 的狀態(tài),只需在 computed 屬性中返回 store 的狀態(tài)就行。而觸發(fā)狀態(tài)改變可以簡單的理解為在組件方法中提交 mutation。
這是一個 最基本的 Vuex 計數(shù)應(yīng)用 的例子。
接下來,我們將在更多的細(xì)微細(xì)節(jié)中討論每個核心思想,讓我們從 State 開始吧。