javascript - 从 React 中的按键捕获键码

标签 javascript reactjs redux react-redux event-listener

我在应用程序中遇到了一个问题,我想使用来自任何给定按键的键码作为属性传递给操作来调度操作。当我试图 console.log 关键字符时,我不断收到错误。

当我这样做时:

class DrumMachine extends React.Component {

  componentDidMount() {
    document.addEventListener('keypress', console.log(event.key));
  }

  componentWillUnmount() {
    document.removeEventListener('keypress');
  }

我收到错误 Uncaught (in promise) DOMException: Failed to load because no supported source was found.

当我尝试这个时:

class DrumMachine extends React.Component {

  componentDidMount() {
    document.addEventListener('keypress', drumKeyPress((e) => console.log(e.key)));
  }

  componentWillUnmount() {
    document.removeEventListener('keypress', drumKeyPress());
  }

我遇到了同样的错误。我相信,一旦我可以记录事件 key ,我就可以自己解决剩下的问题,但现在我只想了解为什么我正在做的事情不起作用。

如果你想看一下,这里有一个codesandbox的链接:https://codesandbox.io/s/k29r3928z7

编辑以解决可能的重复问题。链接的问题与键码或 React 无关,我的问题与 setTimeout() 或 playNote 函数无关。不知道为什么它被标记为重复

最佳答案

您可以通过编写 console.log(event.key) 立即调用 console.log。给出一个可以在事件发生时调用的函数:

document.addEventListener('keypress', (event) => console.log(event.key));

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

相关文章:

javascript - 如何解决类型错误: Cannot read property 'filter' of undefined

javascript - 选中复选框时执行函数

0奇数结果的javascript幂?

javascript - React select onChange 获取 key

javascript - 带有 jscodeshift 的 Codemod - 从导入中删除逗号

javascript - 如何使用 React hook 的 useState 存储具有嵌套对象作为属性的对象数组?

reactjs - 这两种rootSaga配置有什么区别

javascript - 已有对象时如何在jsx样式属性中添加变量?

javascript - 动态创建的音频对象无法在 Android Chrome 浏览器中播放

reactjs - 在react-redux中分派(dispatch)2个同步操作时,状态不会在第一个操作上更新