我对vuex的浅见

vuex:
    状态管理模式--->公共的数据仓库

  1、安装(需先安装vue)
    cnpm install vuex --save-dev

  2、创建仓库  创建一个store文件夹 store/index.js

    将vuex挂载在vue身上

    import Vue from "vue";
    import Vuex from "vuex";
    Vue.use(Vuex);
    const store= new Vuex.Store{}
    export default store


    3、store里面的状态不能够直接进行修改  而是必须通过mutations

    state:存放的是公共的状态  辅助函数  mapState   
      mapState的用法由3种
    1、computed: Vuex.mapState(["message","age"]),
    2、computed: {
          ...Vuex.mapState(["message"])
    },
    3、computed: {
        ...Vuex.mapState({
          msg:state=>state.message
        })
    },

    mutations:用来修改state里面的数据  当前对象下面所有的函数都会接受到2个参数 
    参数1;是state
    参数2:需要修改的值

      特点
        只能做同步操作 
        不能包含业务逻辑
        不能操作异步 
        用途主要用来修改数据

    辅助函数
      mapMutations:辅助函数



    actions:用来操作业务逻辑和异步操作
      调用actions的时候必须通过dispatch进行触发actions里面的方法







edtion2

初始化
1、import  Vue from "vue";
2、import Vuex from "vuex";
Vue.use(Vuex);



new Vue({
    el:
    Store
})
3、创建store

const Store = new Vuex.Store({

})

new Vuex.Store:有很多个属性
    state  mutations  actions  getters  modules


数据(状态)(属性)-----state--------------------------------computed中用

  this.$store.state.属性


  辅助函数:mapState
  1、引入vuex ,在computed里面将所需要的属性遍历出来

  computed:{
      (1)...Vuex.mapState(["属性","属性"])
      (2)...Vuex.mapState({
          key:state=>state.属性
      })
  }


  2、修改数据---mutations---------------------methods里用 
  只要数据需要发生改变那么就必须调用mutations里面的方法

  如果需要调用mutations里面的方法必须要用commit(参数1,参数2)
  参数1:函数名称
  参数2:需要传递的参数


  辅助函数:mapMutations()
  1、引入vuex ,在methods里面将所需要的方法遍历出来

  methods:{
      ...Vuex.mapMutations({
          key:"方法名"
      })
  }

通过commit的方式来触发mutations里面的方法
this.$store.commit(方法名称)


3、actions:操作异步和业务逻辑--------------------------methods里用
    actions这个对象里面所有的方法都会由一个参数 (对象)----》commit.
    当actions里面的方法触发的时候 会调用commit这个方法来触发mutations里面的方法

this.$store.dispatch("方法名称")


4.getters---------------computed里用
同computed,只不过computed是根据data里的值计算,
而getters根据state值计算
 getters:计算属性  数据放在缓存   只要state里面的数据发生改变那么getter里面的方法就会被执行

    辅助函数
        mapGetters()
辅助函数
 1、引入vuex ,在methods里面将所需要的方法遍历出来
methods:{
    ...vuex.mapActions({
        key:"方法名"
    })
}

 modules:模块   作用是将所以的数据进行模块的拆分 而不是放在一个store里面这样不方便管理

    注意在每个小模块导出的时候一定要去加命名空间 namespaced=true  这样就不会出现命名冲突
    如果想要调用小模块里面的方法  则需要加上小模块的名称
        例如
         handleAdd:"goodsStore/handleAdd"



当组件操作状态的这时候->通过dispatch调用actions里面的方法(actions操作异步和业务逻辑)->actions里面的方法触发commit->commit执行后会触发mutations里面的方法
用来做数据的修改,当数据修改完毕后,state发生改变  数据是双向绑定的,因此view层的数据也会发生改变

  

posted @ 2018-12-05 20:19  FAB1E  阅读(138)  评论(0编辑  收藏  举报