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

React JS中判断商品是否加入购物车以禁用按钮的代码疑问

商品加入购物车按钮禁用问题解答

你的代码不正确,问题主要出在两个方面:

1. disabled属性逻辑错误

你在disabled中使用map()方法是错误的:

  • map()会遍历购物车数组,返回一个布尔值数组(比如[true, false]),但React的disabled属性需要单个布尔值(true/false)。数组在布尔判断中会被视为true,导致按钮始终处于禁用状态,完全不符合"商品在购物车才禁用"的预期。
  • 正确的做法是使用some()方法,它会检查数组中是否存在满足条件的元素,只要有一个符合就返回true,正好匹配需求:
    disabled={cart?.cartItems?.some(cartItem => cartItem.productId === product.productId)}
    

2. console.log的语法错误

你写的打印代码末尾多了一个额外的},导致语法错误,所以没有输出:

  • 错误代码:
    console.log(cart?.cartItems?.map((cartItem) => cartItem.productId === product.productId)})
    
  • 修正后代码:
    console.log(cart?.cartItems?.map((cartItem) => cartItem.productId === product.productId))
    

当product.productId为2时,控制台会打印[true, false](对应购物车中ID为2和23的商品匹配结果)。

修正后的完整按钮代码

<Button 
  onClick={() => addToCart(product.productId)} 
  className='btn-block' 
  type='button' 
  disabled={cart?.cartItems?.some(cartItem => cartItem.productId === product.productId)}
>
  加入购物车
</Button>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:03:12