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

React下拉列表中optgroup标签重复显示问题求助

解决下拉列表optgroup标签重复显示问题

问题根源:当前代码遍历periodLists时,每一条数据都生成一个独立的<optgroup>,导致同一分类的标签重复出现。要实现同一分类下的选项归在同一个optgroup里,需先对数据按period_category分组,再进行渲染。

解决步骤:

  1. 对数据进行分组处理
    在组件中添加数据分组逻辑,使用reduce方法将同分类的数据聚合到一起:

    // 按period_category字段分组
    const groupedPeriods = periodLists.reduce((acc, item) => {
      if (!acc[item.period_category]) {
        acc[item.period_category] = [];
      }
      acc[item.period_category].push(item);
      return acc;
    }, {});
    
  2. 修改下拉组件的渲染逻辑
    遍历分组后的数据,为每个分类生成一个optgroup,并在其中渲染该分类下的所有选项:

    <Input
        id="period"
        name="period"
        type="select"
        required
        onChange={handleChange}>
        <option disabled selected>
            Please Select
        </option>
        {/* 遍历分组后的分类与对应选项 */}
        {Object.entries(groupedPeriods).map(([category, items]) => (
            <optgroup key={category} label={category}>
                {items.map(item => (
                    <option
                        key={item.id}
                        value={item.period_name}>
                        {item.period_name}
                    </option>
                ))}
            </optgroup>
        ))}
    </Input>
    

这样处理后,同一个分类只会生成一个optgroup标签,该分类下的所有选项都会被归类到对应的分组中,即可实现你期望的下拉列表显示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:55:20