Vuex繼承了store模式的思想,并做了更多的擴展,提供了更多的功能。
————————————————
Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化。致力于管理項目中所有公用數(shù)據(jù)的狀態(tài)。
————————————————
Vuex是在store模式上的擴展,Vuex是狀態(tài)管理器
Vuex的核心功能:
1、State :Vuex中的 “ 唯一數(shù)據(jù)源 ”
2、Getter :Vuex 中的計算屬性,getter 的返回值會根據(jù)它的依賴被緩存起來,且只有當(dāng)它的依賴值發(fā)生了改變才會被重新計算。
3、Mutation :更改Vuex中數(shù)據(jù)的唯一方式,就是通過mutation進行修改,只支持同步操作。就像我們上面的例子一樣。
4、Action :當(dāng)我們需要異步更改數(shù)據(jù)時,通過 Action 提交的是 mutation,而不是直接變更狀態(tài)。
5、Module : 由于Vuex使用單一狀態(tài)樹,應(yīng)用的所有狀態(tài)會集中到一個比較大的對象。Vuex 允許我們將 store 分割成模塊(module)。每個模塊擁有自己的 state、mutation、action、getter甚至是嵌套子模塊——從上至下進行同樣方式的分割。
————————————————
Vuex的核心流程;:我們在Vue的組件中提交Dispatch操作,用以操作對應(yīng)的Actions方法,然后在Actions的方法中,通過提交Commit操作調(diào)用對應(yīng)的Mutation方法來修改對應(yīng)的狀態(tài)State,最后State的改變被渲染到我們的組件中

store.js
const store = new Vuex.Store({
state: {
personStrategy: true,
},
mutations: {
personParameter(state, param) {
state.personStrategy = param
}
},
actions: {
setPersonParameter({
commit
}, param) {
commit("personParameter", param)
return new Promise((resolve, reject) => {
console.log("跳轉(zhuǎn)成功")
resolve()
})
}
}
})
export default store
分發(fā) Action
store.dispatch('setPersonParameter', false).then(res => {
console.log("編輯", store.state.personStrategy)
})
{{store.state.personStrategy }}