这是我的代码
import { defineStore } from "pinia";
export const DB_CART = defineStore("CART", {
state: () => ({
CART: [
{
$id: "62616ffc6d13e2a9eb04",
quantity: 1
},
{
$id: "6261711719aa15827836",
quantity: 1
},
{
$id: "6275c020740fbd04db50",
quantity: 1
}
],
}),
actions: {
// INCREMENT PRODUCT QUANTITY IN CART
incrementCartQuantity(id) {
const cartItem = this.CART.find(item => item.$id = id);
cartItem.quantity++;
},
// DECREMENT PRODUCT QUANTITY IN CART
decrementCartQuantity(id) {
const cartItem = this.CART.find(item => item.$id = id);
if (cartItem.quantity === 1) return
cartItem.quantity--;
},
// ADD PRODUCT TO CART
addToCart(item) {
this.CART.push(item)
}
},
persist: true
})
我想了解为什么当我从数组中的第二个开始递增或递减购物车项目时,数组会重新排列。
incrementCartQuantity(id) {
const cartItem = this.CART.find(item => item.$id = id);
cartItem.quantity++;
console.log(this.CART) /*EXPECTED OUTPUT
[
{
$id: "62616ffc6d13e2a9eb04",
quantity: 1
},
{
$id: "6261711719aa15827836",
quantity: 1
},
{
$id: "6275c020740fbd04db50",
quantity: 1
}
]
*//*RETURED OUTPUT
[
{ $id: "6261711719aa15827836", quantity: 2 },
{ $id: "6261711719aa15827836", quantity: 1 }, INCREMENTED OBJECT
{ $id: "6275c020740fbd04db50", quantity: 1 }
]
*/
},
在我的 Vue 组件中,在incrementCartItem 上,我发现整个数组都会进行洗牌并弹出顶部的数组,并将其替换为正在变异的项目 我认为数组不会受到任何影响。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您的
find方法正在执行赋值“=”而不是比较“= ==”。替换
与
在两种购物车方法中。
您的
find每次运行时都会将搜索到的id分配给第一个项目的$id。