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

React条件运算符异常:itemCount>0时目标按钮不显示

React条件渲染问题解决方案

核心问题与修复点

  • Props名称大小写不匹配:父组件ItemDetail传递的onadd与子组件ItemCount接收的onAdd大小写不一致,导致父组件的状态更新方法无法被触发。
  • 未触发父组件状态更新:ItemCount的addToCart函数仅弹出提示,未调用onAdd将选中数量传递给父组件,使得itemCount始终为0,无法切换到跳转按钮。
  • 子组件初始状态错误:ItemCount的number状态初始化为0,未使用传入的initial props,不符合业务逻辑中的初始数量设置。

修改后的ItemDetail组件

const ItemDetail = ({product}) => {
  const [itemCount, setItemCount] = useState(0)

  const onAdd = (quantity) => {
    setItemCount(quantity)
  }

  return (
    <div className="vino-container">
      <img className="vino-imagen" alt="a_wine_image" src={product.image} />
      <div className="vino-orden">
        <h3 className="vino-titulo">{product.title}</h3>
        <p className="vino-descripcion">{product.description}</p>
        <p className="vino-precio">${product.price}</p>
        {itemCount === 0
        ? <ItemCount stock={product.stock} initial={product.initial} onAdd={onAdd}/>
        : <Link to="/cart"><button className="btn btn-light">Revisar</button></Link>
        }
      </div>
    </div>
  );
};

修改后的ItemCount组件

function ItemCount({stock, initial, onAdd}) {
    const [number, setNumber] = useState(initial);

    const handleNumberSum = () => {
        if(number >= stock){
            return
        }
        setNumber(number+1)
    }

    const handleNumberMin = () => {
        if(number <= 1){
            return
        }
        setNumber(number-1)
    }

    const addToCart = () => {
        alert(`Has añadido ${number} productos`)
        onAdd(number)
    }

    return (
        <div className="d-grid gap-2 d-md-block">
            <button className="btn btn-primary resta" type="button" onClick={handleNumberMin}>-</button>
            {number}
            <button className="btn btn-primary suma" type="button" onClick={handleNumberSum}>+</button>
            <button className="btn btn-primary agregar" type="button" onClick={addToCart}>Add to cart</button>
        </div>
 )  
}

内容的提问来源于stack exchange,提问作者Maximiliano Rodriguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:40:30