Material-UI freeSolo模式Autocomplete搜索匹配异常问题求助
MUI Autocomplete freeSolo模式搜索结果错乱修复
问题原因
该异常的触发条件明确:传入Autocomplete组件的options数组中存在两个标题完全相同的条目时,组件默认选项匹配逻辑会出现索引映射错位。
组件内部默认以选项显示文本作为唯一判定依据,重复文本会导致首次输入搜索时过滤逻辑匹配错误,因此输入字符a时会错误展示不匹配的Woolies选项;搜索框失焦后重新聚焦会触发组件全量重置过滤状态,因此此时可以暂时展示正确结果。
修复方法
给组件显式传入isOptionEqualToValue属性,自定义选项的唯一匹配规则,替代默认的文本匹配逻辑即可。
如果选项数据自带唯一主键(如id字段),直接按主键匹配即可,参考代码:
<Autocomplete freeSolo // 核心配置:根据实际数据结构调整唯一判定逻辑 isOptionEqualToValue={(option, value) => option.id === value.id} // 其余原有业务配置保持不变即可 options={yourOptionList} renderInput={(params) => <TextField {...params} label="搜索" />} />
如果现有选项数据没有唯一标识字段,先遍历选项数组给每个条目补充不重复的id类标识,保证组件可以区分所有选项,即可彻底解决重复标题导致的过滤错位问题。
修复效果
配置完成后,即使选项列表中存在标题相同的不同条目,首次输入搜索时也会直接返回正确匹配结果,无需失焦重进操作,不会再错误展示不相关选项。
内容的提问来源于stack exchange,提问作者user2824374
相关产品推荐
相关产品推荐

