使用Vuex中的 mapMutations 辅助函数时怎么传递参数(Payload)

用this.$store.commit('xxx',obj)时可以传递一个obj,那么用mapMutations()时怎么传递一个额外的参数。
并没有在官方文档上找到方法,难道mapMutations里面只能放没有传递额外参数的方法吗?
按道理讲不应该啊,既然提供了简便的方法好歹服务到位吧。

**使用 this.$store.commit()时** 两种格式都能提交附加的数据

方法一:
store.commit('increment', {
  amount: 10
})

方法二:
store.commit({
  type: 'increment',
  amount: 10
})



**使用mapMutations()时** 就没发现有提交的位置

import { mapMutations } from 'vuex'

export default {
  // ...
  methods: {
    ...mapMutations([
      'increment' // 映射 this.increment() 为 this.$store.commit('increment')
    ]),
    ...mapMutations({
      add: 'increment' // 映射 this.add() 为 this.$store.commit('increment')
    })
  }
}
阅读 22.9k
4 个回答

this.increment({ amount: 10 })this.add({ amount: 10 })

使用了扩展函数了之后,直接在调用的地方传入参数,会自动传递的
<button @click='reduce(10)'>减</button>

  1. methods:{

          ...mapMutations(['reduce'])
    },
  2. methods:{

          ...mapMutations({
              reduce:'reduce'
          })
        },

以例子中method的increment方法为例:
increment(...args){

return this.$store.dispatch.apply(this.$store,['incrememt'].concat(args))

}

http://www.imooc.com/article/... 看这个很厉害

新手上路,请多包涵

<button @click="Add2({ a: 2, b: 3 ,c:1})">++5</button>
这样懂了吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题