You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React购物车增减商品数量:如何让递减操作停留在0?

解决购物车商品数量递减至负数的问题

要修复递减操作导致商品数量变为负数的问题,只需在removeToCart函数中添加下限判断,确保数量不会低于0。可以通过Math.max()方法实现这一点——将减1后的数值与0对比,取两者中的较大值。

修改后的代码如下:

const addToCart = (productId) => {
    setCartItems((prev) => ({
      ...prev,
      [productId]: prev[productId] + 1,
    }));
};

const removeToCart = (productId) => {
    setCartItems((prev) => ({
      ...prev,
      [productId]: Math.max(prev[productId] - 1, 0),
    }));
};

说明

  • Math.max(prev[productId] - 1, 0)会先计算prev[productId] - 1,如果结果小于0,就返回0;否则返回计算后的数值,彻底避免了负数情况。
  • 按钮调用代码无需修改,保持原有逻辑即可:
<button
    className="add-btn mx-2"
    onClick={() => {
        addToCart(product.id);
    }}
>
    +
</button>
<button
    className="add-btn mx-2"
    onClick={() => {
        removeToCart(product.id);
    }}
>
    -
</button>

内容的提问来源于stack exchange,提问作者Ondrej Dudas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:32:44