React-Downshift - как предотвратить сброс по клавише Escape?
Я использую компонент Downshift с открытым исходным кодом React для создания настраиваемого раскрывающегося списка.
Проблема, с которой я столкнулся, заключается в том, что Downshift очищает выбранный элемент (и вызывает onChange
обратный звонок с null
) когда пользователь нажимает Escape
ключ.
Это очищает мой раскрывающийся список, даже если в моем раскрывающемся списке даже нет пустой опции.
Как я могу подавить это поведение и заставить его просто закрыть раскрывающийся раскрывающийся список (если он открыт), а не изменять значение.
2 ответа
Думаю, я просто сам это понял: я добавил состояние, уменьшающее переопределяющее поведение по умолчанию:
const stateReducer = (_, changes) => {
switch (changes.type) {
// Preventing from clearing value once ESC is pressed
case Downshift.stateChangeTypes.keyDownEscape:
return { isOpen: false };
default:
return changes;
}
};
<Downshift stateReducer={stateReducer}>{/* your callback */}</Downshift>
Вам понравится это решение:
case useSelect.stateChangeTypes.MenuKeyDownSpaceButton:
setMessage(message + " ");
break;