问题代码
<Select
mode="multiple"
style={{ width: 300 }}
placeholder="custom dropdown render"
dropdownRender={(menu) => (
<>
{menu}
<Divider style={{ margin: "8px 0" }} />
<Space style={{ padding: "0 8px 4px" }}>
<Input
placeholder="Please enter item"
ref={inputRef}
value={name}
onChange={onNameChange}
/>
<Button type="text" icon={<PlusOutlined />} onClick={addItem}>
Add item
</Button>
</Space>
</>
)}
options={items.map((item) => ({ label: item, value: item }))}
/>
问题原因
输入框按下删除键时会触发Select
组件中删除已选择一项的事件,我们只需要在dropdownRender
元素里阻止触发删除事件即可
解决代码
<Select
mode="multiple"
style={{ width: 300 }}
placeholder="custom dropdown render"
dropdownRender={(menu) => (
<>
{menu}
<Divider style={{ margin: "8px 0" }} />
<Space style={{ padding: "0 8px 4px" }} onKeyDown={(e) => {e.stopPropagation();}}>
<Input
placeholder="Please enter item"
ref={inputRef}
value={name}
onChange={onNameChange}
/>
<Button type="text" icon={<PlusOutlined />} onClick={addItem}>
Add item
</Button>
</Space>
</>
)}
options={items.map((item) => ({ label: item, value: item }))}
/>