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 Я попытался поставить другое условие, при котором, если значение не определено и параметр определен, отфильтруйте список параметров на основе текста этого параметра. Однако когда я это сделал, я не мог ввести ввод, а затем перемещаться вверх и вниз по отфильтрованному списку так, как я хотел.

0 ответов

Другие вопросы по тегам