个人认为,不用说得太过深奥,vuex其实就是把一个应用的某些数据统一管理起来,以便其他的组件更方便的操作该数据。
当项目结构越来越复杂,组件的多层嵌套使得数据传递非常繁琐,并且难以维护,有了vuex,我们可以把一些数据的状态统一管理起来,通过调用vuex暴漏出来的API,就可以简单方便操作数据。非常方便。
    npm install vuex --save
    //这里我引入vue 直接指定了路径  方法不唯一,只要能引入vue即可
    import Vue from '../../node_modules/vue/dist/vue.js'
    //引入vuex
    import Vuex from 'vuex'
    //调用 Vue.use()
    Vue.use(Vuex)
    //创建store实例
    const store = new Vuex.Store({
        name: "车神-黄杰"
    })
    //导出 store对象
    export default store
   import Vue from '../..//node_modules/vue/dist/vue.js'
   import App from './App.vue'
   import store from './store.js'
   //创建vm实例
   const vm = new Vue({
       el: '#app',
        render(c){
            return c(App)
        },
        //在 vm注册store
        store
    })
    //App组件
    <template>
        <h2>{{name}}</h2>
    </template>
    <script>
    export default {
        data(){
            return {}
        },
        computed(){
            name(){
                return this.$store.state.name
            }
        }
    }
    </script>
    <style lang="less" scoped></style>
不通过计算属性返回状态得到数据的方式,直接通过 $store.state.xxx也可以获得数据,只不过当一个组件多处都用到该数据,这样代码就会显得很臃肿,而通过计算属性定义每一个数据也很不方便,因此官方提供 mapState函数来帮助我们更方便的把状态映射成为组件的计算属性。没啥好测试的,直接用官网的例子,有以下几种方式:
    // 在单独构建的版本中辅助函数为 Vuex.mapState
    import { mapState } from 'vuex'
    export default {
      computed: mapState({
        // 箭头函数可使代码更简练
        count: state => state.count,
        // 传字符串参数 'count' 等同于 `state => state.count`
        countAlias: 'count',
        // 为了能够使用 `this` 获取局部状态,必须使用常规函数
        countPlusLocalState (state) {
          return state.count + this.localCount
        }
      })
    }
    computed: mapState([
      // 映射 this.count 为 store.state.count
      'count'
    ])
    computed: {
      localComputed () { /* ... */ },
      // 使用对象展开运算符将此对象混入到外部对象中
      ...mapState({
            //这里的写法与传入对象的写法一致
      }),
     ...mapState([
            //这里的写法与传入数组的写法一致
          ])
       }
原文:https://www.cnblogs.com/HJ412/p/10699265.html