onKeyDown event not working on divs in React onKeyDown event not working on divs in React reactjs reactjs

onKeyDown event not working on divs in React


You should use tabIndex attribute to be able to listen onKeyDown event on a div in React. Setting tabIndex="0" should fire your handler.


You need to write it this way

<div     className="player"    style={{ position: "absolute" }}    onKeyDown={this.onKeyPressed}    tabIndex="0"  >

If onKeyPressed is not bound to this, then try to rewrite it using arrow function or bind it in the component constructor.


You're thinking too much in pure Javascript. Get rid of your listeners on those React lifecycle methods and use event.key instead of event.keyCode (because this is not a JS event object, it is a React SyntheticEvent). Your entire component could be as simple as this (assuming you haven't bound your methods in a constructor).

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