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;
Другие вопросы по тегам