1. 安装 vuex

cnpm install vuex --save


2. 在使用 vuex 开发的时候使用的比较繁琐,我们单独起一个文件夹
src/stroe/index.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    'title': '技术博客',
    'count': 1
  }
})

3. 我们在入口文件中 main.js 进行挂在

 

import store from './store'
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})


state 的用法
4. 我们已经在 state 中定义了一个变量,官方里 state 中定义的就是我们公用的变量,但他们都调用 count 这个变量,我们可以这么写

<template>
  <div>
    <button class="btn" @click="handleClick">{{this.$store.state.count}}</button>
  </div>
</template>


5. 这里我们需要点击 btn 的时候修改 count 变量,在我们第一张图中介绍,当我们需要修改变量的时候需要需要 dispatch 派发到 Actions 中进行,在有 Actions 出发 commit 方法将数据提交到 Mutations 中进行处理,vuex 遵循单一原则直接上代码

<template>
  <div>
    <button class="btn" @click="handleClick">{{this.$store.state.count}}</button>
  </div>
</template>

<script>
export default {
  name: 'Testvuex',
  methods: {
    handleClick () {
      this.$store.dispatch('changeCount')
    }
  }
}
</script>

<style scoped lang="stylus">
  .btn
    width :100%
    height :3rem
</style>

我们需要在 store/index.js 来定义 actions

actions: {
    // ctx上下文
    changeCity (ctx, city) {
    //  actions如果调用mutations使用commit方法
      ctx.commit('changeCity', city)
    },
    changeCount (ctx) {
      ctx.commit('countIncrease')
    }
  },


通过 actions 来接受 commit 传过来的值,在有 commit 传递给 mutations 进行数据的处理

mutations: {
    countIncrease (state) {
      state.count++
    }
  }


我们点击按钮 count 变量 ++ 完成,基本的 vuex 流程就完成了