Функция ComboBox: onPendingValueChanged prop: проблема с фильтрацией параметров ввода с клавиатуры - PullRequest
0 голосов
/ 28 апреля 2020

В моем 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 [] options.

Тем не менее, я заметил, что когда я регистрирую «value» и «option» каждый раз, когда я меняю ввод с клавиатуры, «value» не определено для входов, которые соответствуют фактическим опциям, в то время как оно определено для входов, которые не соответствуют фактическим опциям.

Например, у меня есть эти числовые опции: 1, 2, 3, 4, 5, 10, 11, 12 и 90.

Когда я набираю «9», параметры корректно фильтруются, например this . Это потому, что «значение» - это «9», чего я и ожидал. (Обратите внимание, что нет опции «9»).

Однако, когда я набираю «1», опции фильтруются как this . Я ожидаю, что опции будут содержать только 1, 10, 11 и 12. Но это не так, потому что «значение» странно «неопределено» (в то время как «опция» - это {ключ: '1', текст: ' 1 '}).

Разве «значение» не должно всегда соответствовать текущему входу? Почему «значение» будет неопределенным, когда у меня есть что-то на входе? Даже если «значение» соответствует существующей опции, не должны ли быть определены «значение» и «опция»? Иначе, я не уверен, как правильно отфильтровать опции ...

PS Я попытался поставить другое условие, если значение не определено, а опция определена, а затем отфильтровать список опций на основе этой опции. текст. Однако, когда я это сделал, я не смог набрать ввод, а затем набирать и пропускать отфильтрованный список так, как я хочу.

...