1

以下针对 vuex 1.x 及 某些0.x 版本

官方文档有个非常简单的 tutorial, 我这里在精简一下,代码大概如下:

html

<h3>Count is {{ counterValue }}</h3>
<div>
  <button @click="increment">Increment +1</button>
  <button @click="decrement">Decrement -1</button>
</div>

js

new Vue({
  el: 'body',
  store: new Vuex.Store({
    state: {
      count: 0
    },
    mutations: {
      INCREMENT: function(state, amount) {
        state.count = state.count + amount
      },
      DECREMENT: function(state, amount) {
        state.count = state.count - amount
      }
    }
  }),
  vuex: {
    getters: {
      counterValue: function(state) {
        return state.count
      }
    },
    actions: {
      increment: function({ dispatch, state }){
        dispatch('INCREMENT', 1)
      },
      decrement: function({ dispatch, state }){
        dispatch('DECREMENT', 1)
      }
    }    
  }
})

预览
http://jsbin.com/cofupo/edit?...

如果上面代码不用 vuex 实现的话会非常简单,html 代码不变,js 更新如下:

new Vue({
  el: 'body',
  data: {
    counterValue: 0
  },
  methods: {
    increment: function(){
      this.counterValue = this.counterValue + 1;
    },
    decrement: function(){
      this.counterValue = this.counterValue - 1;
    },    
  }
})

通过上面的代码对比, vuex 把应用的数据和修改数据的方法放在了一个 store 对象里面统一管理, 对数据的获取和操作则分别通过 vm 新增建的配置属性 vuex 的 getters 和 actions 来进行。


杨军军
1.3k 声望26 粉丝