当前位置: 首页 > 面试题库 >

onKeyDown事件不适用于React中的div

李泓
2023-03-14
问题内容

我想在React中的div上使用keyDown事件。我做:

  componentWillMount() {
      document.addEventListener("keydown", this.onKeyPressed.bind(this));
  }

  componentWillUnmount() {
      document.removeEventListener("keydown", this.onKeyPressed.bind(this));
  }

  onKeyPressed(e) {
    console.log(e.keyCode);
  }

  render() {
    let player = this.props.boards.dungeons[this.props.boards.currentBoard].player;
    return (
      <div 
        className="player"
        style={{ position: "absolute" }}
        onKeyDown={this.onKeyPressed} // not working
      >
        <div className="light-circle">
          <div className="image-wrapper">
            <img src={IMG_URL+player.img} />
          </div>
        </div>
      </div>
    )
  }

它工作正常,但我想以React风格做更多。我试过了

        onKeyDown={this.onKeyPressed}

在组件上。但是它没有反应。我记得它可以处理输入元素。

码笔

我该怎么做?


问题答案:

您应该使用 tabIndex 属性,以便能够在React中的div上监听onKeyDown事件。设置tabIndex =“
0”应该会触发您的处理程序。



 类似资料:
  • 问题内容: 我试图在ReactJS组件中使用event.stopPropagation()来阻止单击事件冒泡并触发遗留代码中与JQuery关联的click事件,但是似乎React的stopPropagation()只能停止传播到事件也附加在React中,并且JQuery的stopPropagation()不会停止传播到随React附加的事件。 有什么方法可以使stopPropagation()在这

  • 问题内容: 我在有角度的应用程序中使用Google Maps javascript API。在带有鼠标的常规台式机上使用Google Chrome浏览器中的应用程序时,各种导航功能(平移/缩放)可以在应用程序的Google Maps部分正常工作。但是,当我尝试在Windows 8.1屏幕上使用触摸手势时,地图无法识别任何平移或缩放手势。如果我捏变焦,什么也不会发生。如果我像鼠标一样在屏幕上双击,则

  • 例如,用谷歌搜索网站,登陆主页,然后进入跨域网站正确记录“有机”作为媒介 (已通过在GA中使用实时数据进行验证) 但是,通过谷歌搜索网站,登陆主页,然后进入跨域网站并完成一个事件,会错误地将“Direct”记录为该事件的媒介。 GTM设置已配置为: -5个域推送到“汇总”GA帐户 -autoLinker=true -Cookie-Domain=auto -auto-Link-domains=sit

  • 问题内容: 我正在将多页php + jquery网站转换为单页角度应用程序。但是我已经用jquery编写了很多代码,因此只打算将php换成与路由等有关的角度。 我遇到的一个我无法弄清楚的问题是,在转换停止工作之前,我一直用尽的jquery click事件。如果更改代码以使其通过ng- click触发,则它将起作用,即使我从控制台调用该函数也是如此。jQuery正常工作,我在提到的函数中放了一些jQ

  • 我正在构建一个混合反应原生RubyonRails应用程序。我正在使用组件中的来检测页面中的更改,并使用它来更改react native navigation菜单。这很好,但当我尝试使用时,页面中可能会有更改,但不会触发。 使用以下代码触发导航状态更改 这可以正常工作,但如果我在ROR应用程序中打开TurboLink,则不再触发。 我该如何解决这个问题?

  • 问题内容: 下面的代码有效。如果有更好的方法,请告诉我。如果我使用通过ajax加载test.html的主页中test.html中存在的脚本内容。该脚本不起作用。 Test.html: 我们必须根据需要通过ajax加载脚本以及动态加载的内容,但是我感到不利的是,每次我们发送ajax请求脚本时都会始终加载内容。但是我只找到了这种解决方案。如果有人知道更好的解决方案,请回复。 例如,如果以这种方式更改代