如何添加新的 属性 来响应 useContext 状态

how to add new property to react useContext state

有点小问题,正在学习reactjs。我正在尝试将 属性 添加到购物车数组中名为 quantity 的对象;当具有相同 id 的相似项目等于迭代器时,添加 属性 数量并增加它的值。我正在学习 React 和 javascript 我来自 python 背景所以... 这是我的代码。

 const addToCart = (item) => {
    if (cart.length){
        for (let iter of cart){
            if (iter.id===item.id){
                item.quantity += 1 // this is 'NaN' if quantity wasn't declared.
                setCart([...cart, item])
            }else{
                setCart([...cart, item])
            }
        }
    }
}

这段代码...什么都没有!

如果我没理解错的话,如果购物车中有商品,您想要增加数量,否则将其添加到购物车?如果是,请尝试以下操作:

const [cart, setCart] = useState([]);

...

const addToCart = (item) => {
    // declare the quantity property if it doesn't exist
    item.quantity = item.quantity || 1;
    // get the index from the cart
    const i = cart.findIndex(obj => obj.id === item.id);
    // if the item exists increment the quantity
    if(i > -1) {
      const newCart = [...cart];
      newCart[i].quantity = item.quantity + 1; 
      setCart(newCart)
    } else {
      // the item doesn't exist so add it to the cart
      setCart([...cart, item]);
    }
 }