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