Tengo un carrito de compras, cuando se presiona el botón "Agregar al carrito", establece el objeto en el almacenamiento local.
const addToCartCookie = () => { let cartData = { id: product._id, name: product.name, slug: product.slug, productPictures: product.productPictures[0].img, description: "sabdsjbfjsd", price: product.storePrice, quantity: itemCount, }; window.localStorage.setItem("cart", JSON.stringify(cartData)); };
Si se pulsa de nuevo el botón "Añadir al carrito", se reemplaza el objeto anterior. Necesito agregar cada objeto si el producto._id no existe en la llamada al botón "agregar al carrito". Si existe product._id (si ya existe el producto), necesito cambiar la cantidad (la cantidad del antiguo + la cantidad del nuevo)
Primero necesita su elemento localStorage como una matriz, luego verifique su existencia primero, cree si no existe, empuje después de analizar la matriz, luego vuelva a secuenciar para guardar los cambios.
const itemToAdd = { id: product._id, name: product.name, slug: product.slug, productPictures: product.productPictures[0].img, description: "sabdsjbfjsd", price: product.storePrice, quantity: itemCount, }; const addToCartCookie = (cartItem) => { const cart = window.localStorage.getItem('cart'); if(cart === null) { window.localStorage.setItem('cart', JSON.stringify([cartItem])); } else { const getCurrentCart = window.localStorage.getItem('cart'); const currentCart = JSON.parse(getCurrentCart); currentCart.push(cartItem); window.localStorage.setItem('cart', JSON.stringify(currentCart)); } };
usar así
addToCartCookie(itemToAdd)
Trate de usar este enfoque.
Haz una matriz item_array .
Cada vez que agregue un artículo a su carrito, primero empújelo en item_array y luego configure el item_array completo en localStorage.
Antes de agregar más artículos al carrito, obtenga item_array de localStorage e inserte el nuevo artículo en item_array . Luego, vuelva a insertar este item_array con un nuevo elemento en el localStorage.
Espero que entiendas lo esencial, lo que estamos tratando de hacer aquí.
Ese es el flujo de trabajo para colocar un nuevo producto en su matriz localStorage.
let current = [ {p: "abc", q: 2}, {p: "def", q: 1}, ] let str = JSON.stringify(current); console.log('store this string in localStorage', str) console.log("read the string from localstorage"); let arr = JSON.parse(str) console.log(arr) let newProduct = {p: "hij", q: 3} arr.push(newProduct) console.log(arr)