ComboBox: функция onPendingValueChanged: проблема с фильтрацией параметров при вводе с клавиатуры
В моем ComboBox я хотел бы, чтобы параметры фильтровались на основе ввода с клавиатуры. Итак, в моей опоре onPendingValueChanged, установленной на функцию handleNumberChange, я выполняю фильтрацию на основе параметра значения, например:
const [ numberOptions, setNumberOptions ] = React.useState<IComboBoxOption[]>(sample);
const handleNumberChange = (option?: IComboBoxOption, index?: number, value?: string): void => {
window.console.log("val",value);
window.console.log("opt",option);
if (value === "") {
setNumberOptions(sample);
}
if (!value || option) {
return;
}
const filteredNumbers: IComboBoxOption[] = sample.filter((num: IComboBoxOption) => {
return value ? num.text.trim().indexOf(value.trim()) > -1 : false;
});
setNumberOptions(filteredNumbers);
};
"sample", кстати, - это просто массив IComboBoxOption[ ] числовых параметров.
Однако я заметил, что когда я регистрирую "значение" и "параметр" каждый раз, когда я изменяю ввод с клавиатуры, "значение" не определено для входов, которые приравниваются к фактическим параметрам, в то время как оно определено для входов, которые не приравниваются к актуальным вариантам.
Например, у меня есть следующие варианты чисел: 1, 2, 3, 4, 5, 10, 11, 12 и 90.
Когда я набираю в "9", параметры фильтра правильно, как это. Это потому, что "value" - "9", чего я и ожидал. (Обратите внимание, что здесь нет опции "9").
Однако, когда я набираю "1", параметры фильтруются следующим образом. Я ожидаю, что параметры будут содержать только 1, 10, 11 и 12. Но этого не происходит, потому что "value" странно "undefined" (в то время как "option" - {key: '1', text: '1'}).
Разве "значение" не должно всегда соответствовать текущему вводу? Почему "значение" не определено, если у меня явно что-то есть на входе? Даже если "значение" соответствует существующей опции, разве не следует определять одновременно "значение" и "вариант"? Иначе я не знаю, как правильно отфильтровать параметры...
PS Я попытался поставить другое условие, при котором, если значение не определено и параметр определен, отфильтруйте список параметров на основе текста этого параметра. Однако когда я это сделал, я не мог ввести ввод, а затем перемещаться вверх и вниз по отфильтрованному списку так, как я хотел.