Vuex中map方法的使用

时间:2024-04-19 10:50:02 类型:vue
字号:    

1, mapState方法: 用于帮助我们映射state中的数据为计算属性\

import {mapState,mapGetters} from 'vuex'

 computed:{
        //借助mapState生成计算属性, 从state中读取数据(对象写法)
        // ...mapState({sum:'sum',school:'school',subject:'subject'}),
        //借助mapState生成计算属性, 从state中读取数据(数组写法)
        ...mapState(['sum','school','subject']),
        
        //以上相当于下面的写法
        // sum(){
        //     return this.$store.state.sum
        // },
        // school(){
        //     return this.$store.state.school
        // },
        // subject(){
        //     return this.$store.state.subject
        // }
    },

2, mapGetters方法: 用于帮助我们映射getters中的数据为计算属性

computed:{
        //借助mapGetters生成计算属性, 从getters中读取数据(对象写法)
        // ...mapGetters({bigSum:'bigSum'})
        //借助mapGetters生成计算属性, 从getters中读取数据(数组写法)
         ...mapGetters(['bigSum'])
          //以上相当于下面的写法
        //   ,bigSum(){
        //         return this.$store.getters.bigSum
        //   }
    },

3, mapActions方法:用于帮助我们生成与actions对话的方法, 即:包含$store.dispatch(xxx)的函数

methods:{
        //程序员自己写
        // increment(){
        //     this.$store.dispatch('increment',this.n)
        //     //dispatch中的increment: 对应store.js中actions中的increment方法

        // },

        //借助mapActions生成对应的方法,方法中会调用dispatch去联系actions(对象写法)
        // ...mapActions({'increment':'increment'})

        //借助mapActions生成对应的方法,方法中会调用dispatch去联系actions(数组写法)
        ...mapActions(['increment'])
    }

4, mapMutations方法: 用于帮助我们生成与muattions对话的方法, 即: 包含 $store.commit(xxx)的函数

methods:{
        //程序员自己写
        // deincrement(){
        //     this.$store.commit('DEINCREMENT',this.n)
        //     //commit中的increment: 对应store.js中mutations中的increment方法
        //     //如果不需要actions做什么(即不需要服务员做什么), 可以直接找后厨

        // },
        //借助mapMutations生成对应的方法,方法中会调用commit去联系mutations(对象写法)
        // ...mapMutations({'DEINCREMENT':'DEINCREMENT'})
        //借助mapMutations生成对应的方法,方法中会调用commit去联系mutations(数组写法)
        ...mapMutations(['DEINCREMENT']),
        //注意,以上调用方法要传值
    }


<