# Vuex (opens new window)
Vuex 使用单一状态树——是的,用一个对象就包含了全部的应用层级状态。至此它便作为一个“唯一数据源 (SSOT (opens new window))”而存在。这也意味着,每个应用将仅仅包含一个 store 实例。单一状态树让我们能够直接地定位任一特定的状态片段,在调试的过程中也能轻易地取得整个当前应用状态的快照。
# 什么是Vuex
Vuex是状态管理模式,它采用集中式存储管理应用的所有组件的状态, 并以相应的规则保证状态以一种可预测的方式发生变化。
# 什么情况下使用 Vuex
- 多个组件共享状态
- 多个视图依赖于同一状态。
- 来自不同组件的行为需要变更同一状态。
# 数据更新逻辑
store.dispath Action
Action 触发 mutation
mutation 改变 state
state 更新触发视图更新
# 单一状态
var store = {
debug: true,
state: {
message: 'Hello!'
},
setMessageAction (newValue) {
if (this.debug) console.log('setMessageAction triggered with', newValue)
this.state.message = newValue
},
clearMessageAction () {
if (this.debug) console.log('clearMessageAction triggered')
this.state.message = ''
}
}
// 组件A
var vmA = new Vue({
data: {
privateState: {},
sharedState: store.state
}
})
// 组件B
var vmB = new Vue({
data: {
privateState: {},
sharedState: store.state
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29