Ini kod saya
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 })
Saya ingin memahami mengapa tatasusunan disusun semula apabila saya menambah atau mengurangkan item troli bermula dari yang kedua dalam tatasusunan.
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 } ] */ },
Dalam komponen Vue saya, pada incrementCartItem, saya dapati keseluruhan tatasusunan akan dikocok dan memaparkan tatasusunan teratas dan menggantikannya dengan item yang bermutasi Saya tidak fikir tatasusunan terjejas dalam apa-apa cara.
Kaedah
find
anda sedang melakukan tugasan"=" dan bukannya bandingkan"= ==".Pengganti
dan
Dalam kedua-dua kaedah shopping cart.
find
每次运行时都会将搜索到的id
分配给第一个项目的$id
anda akan memberikanid
yang dicari kepada$id
item pertama setiap kali ia dijalankan.