我正在通过一个项目使用material-ui,当我尝试加载更大的联系人列表时,我遇到了自动完成组件的一些小问题,某些联系人可能具有相同的名称(由于测试数据),但有不同的ID。
{
contact,
key: index,
text: FullName,
value: <MenuItem key={index} primaryText={item} />
}
谢谢,
例如,有时您在 mui 自动完成中的记录具有相同的显示属性。在用户列表中,2 个用户可能具有相同的名称。 mui 根据该属性自动生成一个密钥,以便您获得重复的密钥。
解决方案是自定义密钥。为此,您需要自定义自动完成列表的呈现。
使用 renderOption 属性
renderOption={(props, option, index) => {
const key = `listItem-${index}-${option.id}`;
return (
<li {...props} key={key}>
{option[optionProperty]}
</li>
);
}}
要消除重复键警告,
text
属性必须是唯一的,因为这是用于创建 React ID 的。
最好的办法是将“文本”字段设置为
index
或某个 ID。假设 FullName
存储在数组中。然后就可以使用索引来查找对应的名称。如果 FullNames 在对象/字典中,您可以使用 ID 来检索 FullName
。
当用户单击菜单项并且 AutoComplete 组件的值不是您想要向用户显示的值时,您可以使用
onNewRequest
事件动态设置该属性。
自动完成现在支持 getOptionKey 参数。