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

如何实现MUI Autocomplete中选项同时隶属于多个分组?

MUI Autocomplete 实现多分组用户展示方案

当前通过groupBy={(option) => option.native.groups[0]}仅能将用户显示在所属的第一个分组下,无法实现用户在所有所属分组中都展示的需求。解决思路是先将原始用户数据平铺展开,让每个用户在其所属的每个分组下生成独立选项,再进行分组。

步骤1:平铺用户数据

将每个用户按所属分组拆分,生成多条对应不同分组的用户条目:

// 原始用户数据示例
const originalUsers = [
  { id: 1, name: '用户1', native: { groups: ['分组1', '分组2'] } },
  { id: 2, name: '用户2', native: { groups: ['分组2', '分组3'] } },
];

// 平铺展开:每个用户的每个分组对应一条记录
const flattenedUsers = originalUsers.flatMap(user => 
  user.native.groups.map(group => ({
    ...user,
    currentGroup: group // 新增字段标记当前条目对应的分组
  }))
);

步骤2:配置Autocomplete

使用平铺后的数据,基于新增的currentGroup字段分组:

import Autocomplete from '@mui/material/Autocomplete';
import TextField from '@mui/material/TextField';

<Autocomplete
  options={flattenedUsers}
  groupBy={(option) => option.currentGroup}
  getOptionLabel={(option) => option.name}
  // 保证选中时,同一个用户的不同分组条目能被识别为同一选项
  isOptionEqualToValue={(option, value) => option.id === value.id}
  renderInput={(params) => <TextField {...params} label="选择用户" />}
/>

关键说明

  • flatMap + map的组合实现了用户-分组的一对多展开,确保每个分组下都出现对应的用户
  • 新增currentGroup字段避免修改原数据结构,同时为groupBy提供明确的分组依据
  • isOptionEqualToValue配置解决了同一用户不同分组条目被误判为不同选项的问题,保证选中逻辑正确

内容的提问来源于stack exchange,提问作者Samuel Corsi-House

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:49:13