【发布时间】:2021-10-02 04:16:08
【问题描述】:
所以我使用react-select 库的Creatable 组件。我希望能够将创建的选项添加到 keyDown 上的选项数组中。 How it looks right now
我的状态:
const [value, setValue] = useState([]);
const [inputValue, setInputValue] = useState('');
const [selectedValues, setselectedValues] = useState([]);
const [current, setCurrent] = useState([]);
const [selection, setSelection] = useState(statusOptions);
我的功能
const handleInputChange = (value) => {
setInputValue(value);
};
const handleOnChange = (haha) => {
setCurrent(haha);
};
const handleKeyDown = () => {
setTimeout(() => {
setNewValues();
}, [2700]);
};
const setNewValues = (event) => {
const newOption = { label: inputValue, inputValue };
inputValue !== '' && setSelection([...selection, newOption]);
setCurrent(current);
let difference = current.filter((x) => !value.includes(x));
setInputValue('');
setselectedValues(difference);
};
组件的外观
<CreatableSelect
options={selection}
isMulti
onChange={handleOnChange}
onInputChange={handleInputChange}
inputValue={inputValue}
value={selectedValues.selected}
inputValue={inputValue}
onKeyDown={handleKeyDown}
/>
问题:现在,当用户键入时,inputValue 被添加到下拉列表中,我不知道为什么。我可以在 keyDown 上添加和删除标签。但是当用户输入速度慢或写得不够快时,下拉列表会以两个创建的选项结束。
【问题讨论】:
标签: reactjs react-select