什么是Vuex
官网上以一个计数应用为例1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18new Vue({
// state
data () {
return {
count: 0
}
},
// view
template: `
<div>{{ count }}</div>
`,
// actions
methods: {
increment () {
this.count++
}
}
})
该状态自管理应用包含三部分:
一、state:驱动应用的数据源;二、view:以声明方式将state映射到视图;
三、actions:响应在view上的用户输入导致的状态变化
单项数据流示意图:
01.jpg)
但是,当我们的应用遇到多个组件共享状态时,单向数据流的简洁性很容易被破坏:
Q1:多个视图依赖于同一状态。(多层嵌套组件间传参繁琐,兄弟间无法传递)
Q2:来自不同视图的行为需要变更同一状态。(需要变更和同步状态的多份拷贝)
因此,我们将组件的共享状态抽取出来,以一个全局单例模式管理
ps:vuex适用于大型的单页面应用,如果应用过于简单,vuex会显得很笨重