有没有办法在material-ui自动完成选项之间添加分隔符?
我只找到了这个变通方法,但我不认为这是最好的方法:
const options = [
{
label: 'Opt 1',
value: 'OPT1'
},
{
label: 'Divider',
value: 'DIV',
isDivider: true
},
{
label: 'Opt 2',
value: 'OPT2'
},
{
label: 'Opt 3',
value: 'OPT3'
}
];
...
// used to remove the opacity of disabled items (in my case dividers)
autocompleteOption: {
'&[aria-disabled="true"]': {
opacity: 1
}
}
...
<Autocomplete
options={options}
multiple
getOptionLabel={(option) => option.label}
getOptionSelected={(option, value) => isEqual(value, option)}
classes={{
option: classes.autocompleteOption
}}
getOptionDisabled={(option) => option.isDivider}
renderOption={(option) => {
if (option.isDivider) {
return <Divider className={classes.divider} />;
}
return option.label;
}}
...
/>
- 在需要分频器的位置添加了isDivider选项
- 添加了getOptionDisabled方法以禁用分隔符选项
- 我添加了一些样式来移除禁用项的不透明性(我的例子中是分隔符)
- 添加了renderOption以基于isDivider属性呈现分隔线
你还有别的主意吗?
感谢您抽出宝贵时间:)
2条答案
按热度按时间3bygqnnd1#
与其创建一个伪选项,不如标记后面应该有分隔符的选项?
例如,假设要在第三和第四个选项之间添加分隔符,则将第三个选项的
isDivider
设置为true
然后在renderOption中插入
<Divider />
,如下所示:cu6pst1q2#
您可以使用分组。组可以具有标签或自定义呈现。
标签:
分隔符: