允许在鼠标事件时选择activeElement

时间:2019-03-08 16:39:58

标签: reactjs react-bootstrap-typeahead

在尝试将鼠标悬停在下拉建议菜单中的某个项目时,我正在尝试将该项目设置为activeElementactiveIndex。但是键盘up/down箭头将停止使用此更改。我也想从activeIndex中使用up/down箭头键。怎么做?这是我的代码

  public itemFocus = (e: any) => {
    let ce = e.currentTarget.id.toString();
    ce = ce.substring(ce.length - 1);
    this._typeahead.getInstance().setState({
      activeIndex: ce,
      activeItem: this.state.options[ce]});
  }

以idx表示结果的迭代器索引

<MenuItem onMouseOver={this.itemFocus} key={idx} option={state} position={idx}>

1 个答案:

答案 0 :(得分:1)

您似乎走在正确的轨道上,尽管有更简单的方法来获取悬停项目的索引和数据。以下应该起作用:

注意:API并未正式支持以下解决方案,如果程序包内部发生更改,则可能会在没有警告的情况下中断。

<Typeahead
  options={[ ... ]}
  ref={(typeahead) => this._typeahead = typeahead}
  renderMenu={(filteredOptions, menuProps) => (
    <Menu {...menuProps}>
      {filteredOptions.map((option, index) => (
        <MenuItem
          onMouseOver={() => {
            this._typeahead.getInstance().setState({
              activeIndex: index,
              activeItem: option,
            });
          }}
          option={option}
          position={index}>
          {option}
        </MenuItem>
      ))}
    </Menu>
  )}
/>

工作示例:https://codesandbox.io/s/ojz4kzn2vq