前言:项目中有使用Vuex,通过官网进行学习,现进行总结。
Vuex--状态管理模式
状态管理模式包含以下几个部分:
- state: 驱动应用的数据源
- view: 以声明方式将state映射到视图
- actions: 响应在view上的用户输入导致的状态变化
简单的“单向数据流”图示:
flow.png
当遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:
- 多个视图依赖于同一状态
-
来自不同视图的行为需要变更同一状态
这时,我们就需要全局单例模式管理
如图所示:
vuex.png
Vuex和单纯的全局对象有以下两点不同:
1.Vuex的状态存储是响应式的。当Vue组件从store(仓库)中读取状态的时候,若store中的状态发生变化,那么响应的组件也会相应的得到高效更新。
2.不能直接改变store中的状态。改变store中的状态的唯一途径就是显示地提交(commit)mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment (state) {
state.count++
}
}
})
可以通过store.state来获取状态对象,以及通过store.commit方法触发状态变更:
store.commit('increment')
console.log(store.state.count)
由于store中的状态时响应式的,在组件中调用store中的状态简单到仅需要在计算属性中返回即可。触发变化也仅仅是在组件的methods中提交mutation。
网友评论