【发布时间】:2021-03-14 00:19:46
【问题描述】:
(例如)我希望限制用户在我的自动完成组件中仅选择 3 个选项,并在 TAG Array 的长度达到 3 时禁用这些选项。
问题是 api 中没有 limitMaxNumberOfTags 选项,我无法获得任何方法来访问 Selected tags 数组{除了 limitTags,它只限制可见标签}
.
类似的东西可能会有所帮助
getOptionDisabled={(options, tags) => (tags.length > 3 ? true : false)}
.
到目前为止,这是我的自动完成实现
<Autocomplete
multiple
id="tags-outlined"
options={students}
getOptionLabel={(option) => option.personalInfo.firstName + ' ' + option.personalInfo.lastName}
defaultValue={[...added]}
onChange={(e, newVal) => setAdded([...newVal])}
renderOption={(option, state) => {
return (
<Chip
icon={
<FaceIcon /> /*<Avatar color="primary" variant='outlined' size="small" className={classes.small}></Avatar>*/
}
label={option.personalInfo.firstName + ' ' + option.personalInfo.lastName}
color="default"
variant="outlined"
{...state}
/>
);
}}
renderTags={(options, getTagProps) =>
options.map((option) => (
<Chip
icon={
<FaceIcon /> /*<Avatar color="primary" variant='outlined' size="small" className={classes.small}></Avatar>*/
}
label={option.personalInfo.firstName + ' ' + option.personalInfo.lastName}
color="primary"
variant="outlined"
{...getTagProps({})}
/>
))
}
filterSelectedOptions
filterOptions={(options, state) =>
options.filter((option) => {
for (let i = 0; i < added.length; i++) {
if (added[i]._id === option._id) {
return false;
}
}
return true;
})
}
// ---> getOptionDisabled={(options) => (tags.length > 3 ? true : false)}
renderInput={(params) => (
<TextField {...params} variant="outlined" color="primary" label="Select Students" placeholder="Participant" />
)}
/>
【问题讨论】:
标签: reactjs autocomplete material-ui material-design