微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何添加新属性以响应 useContext 状态

我有一个小问题,我正在学习 reactjs。我正在尝试向购物车数组中名为数量的对象添加一个属性;当具有相同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]);
    }
 }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。