You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vuex报错:unknown mutation type: addToCart,两种调用方式均无效的问题求助

解决Vuex中"unknown mutation type: addToCart"错误

你碰到的这个报错,问题根源其实非常简单——你在Vuex Store里把mutations写成了单数的mutation!Vuex的配置选项里,存放mutation方法的键名必须是复数形式的mutations,单数拼写会让Vuex无法识别你定义的addToCart方法,所以不管用哪种调用方式都会抛出"unknown mutation type"的错误。

第一步:修正Vuex Store的拼写错误

把Store代码里的mutation:改成mutations:,修正后的完整代码如下:

import { createStore } from "vuex";
export default createStore({
  state:{
    cart: []
  },
  mutations:{ // 这里改成复数的mutations
    addToCart(state, product){
      let item = state.cart.find(i=>i.id === product.id)
      if(item){
        item.quantity++
      }else{
        state.cart.push({...product, quantity: 1})
      }
    }
  }
})

验证你的两种调用方式

修正Store之后,你之前写的两种调用方式都是完全可行的:

方式1:使用mapMutations辅助函数

你的代码没有问题,修正Store后点击按钮就能正常触发addToCart mutation:

<button @click="addToCart(product)" class="add">Add</button>
<script>
import {mapMutations} from 'vuex'
export default{
  methods:{
    ...mapMutations(["addToCart"]),
  },
  props: ["product"],
}
</script>

方式2:直接调用this.$store.commit

这种写法也没问题,同样能正常工作:

<button @click="addToCart()" class="add">Add</button>
<script>
export default {
  props: ["product"],
  methods:{
    addToCart(){
      this.$store.commit('addToCart', this.product)
    }
  }
}
</script>

小提示

以后遇到这类注册识别问题,可以在组件里打印console.log(this.$store),查看store对象的结构,确认mutations是否正确包含了你定义的方法,这样能快速定位拼写或注册类的错误。

内容的提问来源于stack exchange,提问作者Prasanga Thapaliya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 11:48:13