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

React菜单产品构建器:实现按组单选附加项并更新列表

解决附加项按组单选的问题

你的核心问题是状态更新时未处理同组旧附加项,导致重复添加。只需修改setBuildMenuExtras的逻辑,添加新项前先移除当前组已有的项,就能实现每组单选的效果。

修改状态更新代码

把原来直接追加新项的逻辑,改成先过滤同组旧项再添加新项:

const [buildMenuExtras, setBuildMenuExtras] = useState([]);
setBuildMenuExtras((prevExtras) => [
  // 保留所有非当前组的附加项
  ...prevExtras.filter(extra => extra.productGroupId !== activeTab),
  // 添加当前选中的新附加项
  {
    id: menuExtraId,
    name: menuExtraName,
    price: menuExtraPrice,
    quant: menuExtraQuant,
    atts: menuExtraCheckedAtts,
    productGroupId: activeTab,
  },
]);   

逻辑说明

  • prevExtras.filter(extra => extra.productGroupId !== activeTab):遍历之前的附加项数组,只保留不属于当前选中组(activeTab对应的组)的项,相当于清空当前组的旧选择。
  • 随后将新选中的附加项加入数组,这样每组永远只会保留最新选择的那一项,自动取消同组旧项。

渲染部分无需修改

你的渲染代码逻辑是正确的,过滤出当前组的附加项后渲染,现在每组只会有一个项,渲染结果就是每组显示当前选中的内容,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:53:09