React-Downshift-如何防止使用Escape键清除?

时间:2019-10-09 07:45:09

标签: reactjs accessibility dropdown downshift

我正在使用React开源组件Downshift构建我的自定义下拉列表。

我面临的问题是,当用户按下onChange键时,Downshift会清除选定的项目(并使用null调用Escape回调。

即使我的下拉菜单没有空选项,这也会清除我的下拉菜单。

如何抑制这种行为,并使其仅关闭打开的下拉列表(如果已打开)而不更改值。

1 个答案:

答案 0 :(得分:0)

我想我只是自己想通了:我添加了一个状态减少的替代默认行为:

  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>