vuex 版本为
^2.3.1
,按照我本身的理解来整理vuex。
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的全部组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。javascript
什么是状态?vue
状态管理是什么:java
具体有如下三个内容:vuex
状态管理的三个内容是怎么使用的呢?就须要先知道 vue 是单向数据流的方式驱动的,而后三个内容的使用实际上是下面这个循环图,state 会显示到 view,用户会根据 view 上的内容进行操做,触发 actions 而后再去影响 state(这里先无论三个东西是哪一个先起头的)框架
正常状况下很好理解和使用,由于都是单向的,非黑即白,可是面对复杂的业务环境之下,单向流方式会很容易遭到破坏:异步
多个视图依赖于同一状态。模块化
来自不一样视图的行为须要变动同一状态。spa
以上的这些模式很是脆弱,主要是由于多个组件之间的关系会变得很复杂,一般会致使没法维护的代码。
有见及此,vuex 借鉴了 Flux、Redux、和 The Elm Architecture的设计思想,将状态管理单独抽离出来,造成了如今的 vuex。官方也画出了一个图来讲明 vuex 在哪里起做用的,参看下图:.net
这个图是须要解释一下的:设计
流程:
关于 getter:
关于 actions:
笔者本身的理解就是Action 至关于一把手枪,mutation 至关于里面的子弹,靶心就是 state, 得分指示牌就是 getter 。
虽然 Vuex 能够帮助咱们管理共享状态,但也附带了更多的概念和框架。这须要对短时间和长期效益进行权衡。
(commit) mutation
。总的来讲就是 vuex 的状态是存储在 store 里面的,要修改状态就只能进行 mutation 的提交 commit,一旦进行提交成功,状态被改变后,相关使用该状态的组件也会更新状态信息。
// 若是在模块化构建系统中,请确保在开头调用了 Vue.use(Vuex) const store = new Vuex.Store({ state: { count: 0 }, mutations: { // 只能经过 mutation 来进行状态变动 increment (state) { state.count++ } } })
须要使用 es2015语法编写 javascript
// 经过vuex 的 mutation 进行 commit store.commit('increment') // 经过store.state来获取状态对象 console.log(store.state.count) // -> 1
在jsrun上的样例地址:http://jsrun.net/i2qKp
参考: