javascript - 使用 Click 或 Escape 键调用 setState

标签 javascript reactjs ecmascript-6

我有一个 React Modal,它通过 handler function 打开和关闭。

我想通过点击事件或使用 esc 键来调用该函数以提供辅助功能建议。

如何同时跟踪这两个事件?

到目前为止,我得到了 esc 事件:

 handleCloseModal = event => {
    if (event.keyCode === 27) {
      this.setState({ modal: false })
    }
  }

但后来我失去了点击功能

<Modal 
  onClick={handleCloseModal} 
  role="button" tabIndex={0} 
  onKeyDown={handleCloseModal}
 />

我该怎么办?

最佳答案

一个可能的解决方案是:创建一个单独的函数来关闭 Modal。将该函数用于 onClick 并在按下 esc 键时调用它。

像这样:

<Modal 
  onClick={handleCloseModal} 
  role="button" tabIndex={0} 
  onKeyDown={handleKeyDown}
/>

handleKeyDown = event => {
  if (event.keyCode === 27) {
    handleCloseModal()
  }
}

handleCloseModal = () => this.setState({ modal: false })

关于javascript - 使用 Click 或 Escape 键调用 setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55803345/

相关文章:

javascript - ES6 类 : Unexpected token in script?

javascript - 在 isomorphic-fetch 中禁用控制台日志

javascript - 为什么 'eval'执行会出错?

javascript - 函数内删除在 Javascript 中不起作用

javascript - 优先级-web-sdk : Implementing a DATE8 field

javascript - Jest 测试未通过 react-navigation 正常运行

javascript - React/Redux - 如何复制深度嵌套状态?

javascript - javascript 删除字符串中的所有字符

javascript - ReactJs:将状态数据映射到复选框

reactjs - 使用 Electron 从 React Component 打开文件对话框