安装依赖
1
   | npm install vuex --save-dev
   | 
 
在文件目录下建立store文件夹,并且建立store.js
构造单一状态树
Vuex 使用单一状态树——是的,用一个对象就包含了全部的应用层级状态。至此它便作为一个“唯一数据源 (SSOT)”而存在。这也意味着,每个应用将仅仅包含一个 store 实例。单一状态树让我们能够直接地定位任一特定的状态片段,在调试的过程中也能轻易地取得整个当前应用状态的快照。
如何使用
1 2 3 4 5 6 7 8 9
   | import Vue from 'vue' import Vuex from 'vuex'
  Vue.use(Vuex) export const store = new Vuex.Store({	   state:{ 
    } })
   | 
 
在main.js中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
   | import Vue from 'vue' import App from './App.js' import {store} from './store/store'
  Vue.config.productionTop = false;
  new Vue({    store,   el:'#App',   router,   compontents:{App}   .... }) ``` 
  ### 在 Vue 组件中获得 Vuex 状态 那么我们如何在 Vue 组件中展示状态呢?由于 Vuex 的状态存储是响应式的,从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态: ``` js
  const Counter = {   template: `<div>{{ count }}</div>`,   computed: {     count () {       return store.state.count     }   } }
   | 
 
每当 store.state.count 变化的时候, 都会重新求取计算属性,并且触发更新相关联的 DOM。
然而,这种模式导致组件依赖全局状态单例。在模块化的构建系统中,在每个需要使用 state 的组件中需要频繁地导入,并且在测试组件时需要模拟状态。
Vuex 通过 store 选项,提供了一种机制将状态从根组件“注入”到每一个子组件中(需调用 Vue.use(Vuex)):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
   | const app = new Vue({   el: '#app',      store,   components: { Counter },   template: `     <div class="app">       <counter></counter>     </div>   ` }) ```  通过在根实例中注册 store 选项,该 store 实例会注入到根组件下的所有子组件中,且子组件能通过 this.$store 访问到。让我们更新下 Counter 的实现:
  ``` js const Counter = {   template: `<div>{{ count }}</div>`,   computed: {     count () {       return this.$store.state.count     }   } }
  |