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

React Context API全局数量更新异常:点击按钮仅加1而非指定值

问题解决:React Context购物车数量累加异常

核心原因

CartProvider中的addToCart函数没有使用传入的商品数量参数q,而是固定执行prevQuantity + 1,导致无论选中多少数量,每次只累加1。同时removeFromCart也存在同样的问题,初始购物车数量useState(1)不符合逻辑,应该初始化为0。

修正后的Provider代码

"use client";
import React, { useState, createContext } from "react";

export const Context = createContext({
  quantity: 0,
  addToCart: (q: number) => {},
  removeFromCart: (q: number) => {},
});

const CartProvider = ({ children }: { children: React.ReactNode }) => {
  // 初始购物车数量改为0
  const [quantity, setQuantity] = useState(0);
  
  // 使用传入的q参数进行累加
  const addToCart = (q: number) => {
    setQuantity((prevQuantity) => prevQuantity + q);
  };
  
  // 使用传入的q参数进行递减
  const removeFromCart = (q: number) => {
    setQuantity((prevQuantity) => prevQuantity - q);
  };
  
  return (
    <Context.Provider value={{ quantity, addToCart, removeFromCart }}>
      {children}
    </Context.Provider>
  );
};

export default CartProvider;

其他代码确认

  • Counter组件已正确将选中的value传递给Button组件
  • Button组件已正确接收quantity参数并调用addToCart(quantity),这部分无需修改

修正后,点击加入购物车按钮时,全局quantity会正确累加选中的商品数量。

内容的提问来源于stack exchange,提问作者no iam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:17:04