javascript - 在ReactJS中捕获 'escape'按键

标签 javascript reactjs events dom-events

我有一个具有以下结构的 React 应用程序:

<App>
  <Input/>
  <Lists>
    <List>
    .
    .
    <List/>
   </Lists>
</App>

每个列表都有修改按钮,如果单击该按钮,列表将显示一个输入字段,否则通过切换修改( bool 状态)显示一些文本。

我想要实现的是,单击转义键后,用户应该能够在两者(输入字段和文本)之间切换。

我尝试过的:

  1. 使用 document.addEventListener,但我无法访问事件处理程序(位于 List 类中),我无法将其添加到类本身中,因为它假定 List.document 是一个属性。

  2. 使用onKeyPress合成事件

我不知道如何将其添加到应用程序组件中(我希望用户随时单击“转义”,而不是关注输入字段或其他内容,然后按“转义”)

我将其添加到输入字段(被列表中的文本替换的字段),但它不起作用(它与 enter 键一起使用,我使用 event.key= =='逃脱')。我控制台记录了该事件,但按 Enter 键正常工作时没有任何结果。

感谢所有建议:)。

最佳答案

退出键不会触发 keypress 事件。您将需要监听 keydown 事件。

class App extends PureComponent {
    // ...

    componentDidMount() {
        window.addEventListener('keydown', callback);
    }

    componentWillUnmount() {
        window.removeEventListener('keydown', callback);
    }

    // ...
}

关于javascript - 在ReactJS中捕获 'escape'按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47849060/

相关文章:

javascript - 如何在 vaadin(例如 OpenStreetMap)中集成 javascript?

javascript - 将 PHP 变量分配给 JavaScript 变量,值正在消失

reactjs - react 模拟测试 useNavigate

javascript - 在javascript中拖动光标?

javascript - 如何在 Angular.js 中创建带参数的验证属性?

javascript - 我的 ajax 调用没有给出任何错误和响应

reactjs - 如何用 Jest 和 enzyme 来使用 Relay Modern 进行测试?

javascript - React useEffect 钩子(Hook)引用了错误的值

events - 如何在谷歌地图 v3 中触发标记的 dragend 事件?

events - CKEditor 的点击事件未触发