小编典典

如何在我的onClick处理程序中添加键盘侦听器?

reactjs

我有以下几点:

class MyTextArea extends React.Component {

  handleClick = () => {
    this.focus();
  }

  focus = () => this.ref.focus;

  handleRef = (component) => {
    this.ref = component;
  };

  render() {
    return (
      <div className="magicHelper" onClick={this.handleClick}>
        <textarea></textarea>
      </div>
    );
  }
}

我的CSS:

.magicHelper {
  width: 100%;
  height: 100%;
}
textarea {
  line-height: 32px;
}

我需要这样做,因为我需要将textarea的占位符在页面中水平和垂直居中。给定textareas不能使文本垂直居中,我需要使textarea的高度保持较短。因此,我需要做到这一点,以便当用户在文本区域之外单击时,以为他们在单击文本区域时,文本区域会自动聚焦。

这将导致ESLint错误:“具有单击处理程序的可见,非交互式元素必须至少具有一个键盘侦听器”。如何更新以上内容以通过eslint?


阅读 406

收藏
2020-07-22

共1个答案

小编典典

https://github.com/evcohen/eslint-plugin-
jsx-a11y/blob/master/docs/rules/click-events-have-key-
events.md

看来这条规则是为了强制执行可访问性标准。

基于此,更改您的代码以执行类似的操作

<div className="magicHelper" onClick={this.handleClick} onKeyDown={this.handleClick}>

您也可以在eslint中禁用该规则,我想这取决于首选项。

2020-07-22