Vue Pinia如何更新对象内的属性

qrjkbowd  于 2023-02-24  发布在  Vue.js
关注(0)|答案(1)|浏览(480)

我正在使用pinia,我想知道如何更新对象中的属性。我在state.cart中有一个对象数组,这些对象是一些产品,它们都有一个名为quantity的属性。这个属性可以更改,所以我需要“更新”购物车数据。
这是我尝试过的方法:

state: () => ({
   cart: []
}),

actions: {
  updateQuantityOfProduct(product, val) {
    const prod = this.cart.find((item) => item.id === product.id)
    prod.quantity = val
    this.$patch({
      cart: this.cart,
    })
  },
}

但这似乎行不通,因为购物车没有更新和/或当我刷新时,更新/更改还没有添加(产品的数量就像更改前一样)
我该如何解决这个问题,我做错了什么?

zfycwa2u

zfycwa2u1#

我遇到了和你一样的问题。在发布了之前的答案并重新编写之后,我解决了我的问题。我不知道为什么你的问题不起作用,也许你可以尝试下面的版本。

export const useCartStore = defineStore('carts', {
  state: () => {
    return {
      cart: [],
    }
  },
  actions: {
    updateQuantityOfProduct(product, val) {
      this.cart.map(item => {
        if (item.id === product.id) {
          item.quantity = val
        }
      })
    },
  },
})

相关问题