未分类

Vuex学习(1)

什么是Vuex

官网上以一个计数应用为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
new Vue({
// state
data () {
return {
count: 0
}
},
// view
template: `
<div>{{ count }}</div>
`,
// actions
methods: {
increment () {
this.count++
}
}
})

该状态自管理应用包含三部分:

一、state:驱动应用的数据源;
二、view:以声明方式将state映射到视图;
三、actions:响应在view上的用户输入导致的状态变化
单项数据流示意图:


但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:

Q1:多个视图依赖于同一状态。(多层嵌套组件间传参繁琐,兄弟间无法传递)
Q2:来自不同视图的行为需要变更同一状态。(需要变更和同步状态的多份拷贝)

因此,我们将组件的共享状态抽取出来,以一个全局单例模式管理

ps:vuex适用于大型的单页面应用,如果应用过于简单,vuex会显得很笨重