【问题标题】:Problem in react with shopping cart. When I make the 2nd purchase与购物车反应的问题。当我进行第二次购买时
【发布时间】:2023-02-09 22:10:06
【问题描述】:

当我第二次购买相同尺寸的相同商品时,购物车只剩下最后添加的商品

购物车保存在 useState 中,在下面,我将第二次购买时出现问题的 cartContext 中的函数留在原处,如果我回到开头并尝试进行购买,它不报错

函数 addItem(项目){

    let cartnew=[...cart];

    
    const isInCar = cart.some(iteminCart => iteminCart.id === item.id);
    const isInCarTalle = cart.some(iteminCart2 => iteminCart2.id === item.id && iteminCart2.tallecompra === item.tallecompra);
    iteminCart3.tallecompra!==item.tallecompra);
  
    if (isInCar === true) {
       

       
        cartnew.forEach((compra,i) => {
            
            if (isInCarTalle) {
                //console.log("el vartalle es  "+isInCarTalle)

                if (compra.id === item.id && compra.tallecompra === item.tallecompra) {
             cartnew[i].cantidad+=item.cantidad;



                }

            }

            if (!isInCarTalle) {
                setCart([...cartnew, item]);

            }




        });



   
      setCart([...cartnew]);

    }

  
         setCart([...cart,item]);
    }

 
}

/项目详细信息COINTAINER.JSX/

function handleAddToCart(count){
producto.cantidad=count;
  addItem(producto);
  handleShow();

};

<模态页脚>

      <Button2 variant="secondary" onClick={handleClose}>
        CONTINUAR EN EL SITIO
      </Button2>
     
      <Link to='/checkout'>
      <Button2 variant="primary" onClick={handleClose}>
        FINALIZAR COMPRA
      </Button2>
      </Link>
    </Modal.Footer>

【问题讨论】:

    标签: reactjs shopping-cart


    【解决方案1】:

    函数 addItem 处理购物车中重复项的方式似乎存在问题。它似乎试图处理两种情况,即购物车中存在具有相同 ID 和相同尺寸的商品,以及购物车中存在具有相同 ID 但尺寸不同的商品。

    尝试这个:

    function addItem(item) {
    const isInCar = cart.some(iteminCart => iteminCart.id === item.id);
    const isInCarTalle = cart.some(iteminCart2 => iteminCart2.id === item.id && iteminCart2.tallecompra === item.tallecompra);
    
    let newCart = [];
    if (isInCar) {
        cart.forEach(compra => {
            if (compra.id === item.id && compra.tallecompra === item.tallecompra) {
                newCart.push({...compra, cantidad: compra.cantidad + item.cantidad});
            } else {
                newCart.push(compra);
            }
        });
        setCart(newCart);
    } else {
        setCart([...cart, item]);
    }
    

    }

    【讨论】:

    • 问题仍然存在,当我在第 3 次购买相同尺寸的相同商品两次时,如果我在相同的路线/ItemDetailContainer 上购买,它不会添加到购物车。另一方面,如果每次你购买我都将它重定向到 Home 路线,在这种情况下它不会产生那个错误。无论如何,我不想重定向,这里我留下了 itemdetil 所在的代码。
    • 请检查我的答案的编辑版本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2011-08-01
    • 2022-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多