【发布时间】:2021-01-15 10:46:19
【问题描述】:
我在模式标签中使用来自 AntD 的 Select 组件来创建一个标签输入选择器,它允许用户选择最多 5 个他们选择的随机标签。
const [optionsSelected, setOptionsSelected] = useState([]);
const handleSelect = value => {
console.log(value, optionsSelected);
const options = optionsSelected.concat(value);
setOptionsSelected(options.slice(0, 5));
};
return (
<Form.Item
name="keywords"
label={<strong>Keywords</strong>}
rules={[{required: true}]}
>
<Select
mode="tags"
maxTagTextLength={20}
placeholder="e.g. JavaScript, Engineer, QA, Marketing, Customer Success, etc."
notFoundContent={<div>Enter a keyword. Press enter to select it.</div>}
onSelect={handleSelect}
value={optionsSelected}
/>
</Form.Item>
);
但是我似乎无法让它工作,所以如果用户尝试选择超过 5 个标签,那么它不会允许他们这样做。 任何想法如何实现这一目标?
【问题讨论】:
-
一个简单的长度检查就可以了,不是吗?我也看不到
.slice(0, 5)的目的。 -
是的,但是我应该在哪里进行这项检查以防止添加新标签
-
您的
handleSelect听起来像这个地方。除非您的标签少于五个,否则不要更新您的选项。