千家信息网

vuex的辅助函数如何用

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"vuex的辅助函数如何用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mapStat
千家信息网最后更新 2025年12月02日vuex的辅助函数如何用

本篇内容介绍了"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         }      })  }}

定义的属性名与state中的名称相同时,可以传入一个数组

//定义stateconst state={    count:1,}//在组件中使用辅助函数computed:{    ...mapState(['count'])}

mapGetters

computed:{    ...mapGetters({      // 把 `this.doneCount` 映射为 `this.$store.getters.doneTodosCount`      doneCount: 'doneTodosCount'    })}

当属性名与getters中定义的相同时,可以传入一个数组

computed:{  computed: {  // 使用对象展开运算符将 getter 混入 computed 对象中    ...mapGetters([      'doneTodosCount',      'anotherGetter',      // ...    ])  }}

总结:

  • mapState与mapGetters都用computed来进行映射

  • 在组件中映射完成后,通过this.映射属性名进行使用

mapMutations

methods:{    ...mapMutations({        add: 'increment' // 将 `this.add()` 映射为 `this.$store.commit('increment')`    })}

当属性名与mapMutatios中定义的相同时,可以传入一个数组

methods:{    ...mapMutations([        'increment', // 将 `this.increment()` 映射为 `this.$store.commit('increment')`        // `mapMutations` 也支持载荷:        'incrementBy' // 将 `this.incrementBy(amount)` 映射为 `this.$store.commit('incrementBy', amount)`    ]),}

mapActios

mathods:{    ...mapActions({        add: 'increment' // 将 `this.add()` 映射为 `this.$store.dispatch('increment')`    })}

当属性名与mapActios中定义的相同时,可以传入一个数组

methods:{    ...mapActions([        'increment', // 将 `this.increment()` 映射为 `this.$store.dispatch('increment')`           // `mapActions` 也支持载荷:        'incrementBy' // 将 `this.incrementBy(amount)` 映射为 `this.$store.dispatch('incrementBy', amount)`    ]),}

总结

  • mapMutations与mapActios都在methods中进行映射

  • 映射之后变成一个方法

多个modules

在不使用辅助函数的时候,

this.$store.commit('app/addCount')

使用辅助函数,辅助函数的第一个参数给定命名空间的路径

computed: {  ...mapState('some/nested/module', {    a: state => state.a,    b: state => state.b  })},methods: {  ...mapActions('some/nested/module', [    'foo', // -> this.foo()    'bar' // -> this.bar()  ])}

或者使用 createNamespacedHelpers函数来创建一个基于命名空间的辅助函数

import { createNamespacedHelpers } from 'vuex'const { mapState, mapActions } = createNamespacedHelpers('some/nested/module') //给定路径//使用方法与之前相同export default {  computed: {    // 在 `some/nested/module` 中查找    ...mapState({      a: state => state.a,      b: state => state.b    })  },  methods: {    // 在 `some/nested/module` 中查找    ...mapActions([      'foo',      'bar'    ])  }}

"vuex的辅助函数如何用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0