在按钮上使用clickevent时,Vue.js中出现TypeError。

时间:2018-09-07 12:23:30

标签: javascript object vue.js shopping-cart

我正在尝试将产品添加到购物车中,但是我一直碰到未被捕获的TypeError,因为我是前端开发的新手,这对我来说是一个痛苦。

这是显示给我的错误。

如果我转至指向的javascript文件,则会找到此文件。 :4引发积。quantity= 1; 这是 Mutation.js

的一部分
export const addProductToCart = (state, product) => {
  product.quantity = 1;
  state.cart.push(product);
};

当我进入 Action.js 时,我看到了这段代码。这将检查单击对象的索引并将其添加到购物车。

export const addProductToCart = ({ state, commit }, product) => {
 const exists = state.cart.find(exists => exists.Id === product.Id);

 if (exists) {
   commit("updateProductQuantity", product);
 }else {
   commit("addProductToCart", product);
 }
};

现在进入我的 ProductList.vue 。在模板内容中,我将此代码添加到了将产品添加到购物车的按钮中。

<b-button variant="primary" @click="addProductToCart(product)">           
Add to cart</b-button>

对于同一文件,这是整个脚本部分的代码。

<script>
export default {
 name: "product-list",
 props: {
   products: {
     type: Array,
     required: true,
   }
 },
 methods: {
   view(product) {
     this.$router.push (`/products/${product.slug}`);
    },
 addProductToCart(product) {
    this.$store.commit("addProductToCart", this.product);
    this.$toastr("success", "Product added to cart successfully.");
  },
 }
};
</script>

index.js 文件

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

import * as actions from "./actions";
import * as mutations from "./mutations";
import * as getters from "./getters";

const store = new Vuex.Store({
 strict: true,
 actions,
 mutations,
 getters,
 state: {
    cart: [],  
 }
});

store.subscribe((mutation, state) => {
 localStorage.setItem("store", JSON.stringify(state));
});
export default store;

我已经尝试了一天或2天,但已经尝试了多种其他选择。但我找不到任何解决方案。

这里有什么我想念的吗? 此代码足以找到解决方案吗?还是我需要搜索其他地方。

亲切的问候。

1 个答案:

答案 0 :(得分:1)

@Bennett Dams在评论中提到;问题出在这里:

addProductToCart(product) {
    this.$store.commit("addProductToCart", this.product);
    this.$toastr("success", "Product added to cart successfully.");
},

如您所见,您的方法将product作为参数,但是随后您尝试将this.product发送到vuex动作(而this.product的确是{{1} }。您应将代码替换为:

undefined