Je veux utiliser un événement keyDown sur un div dans React. Je le fais :
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>
)
}
Cela fonctionne bien, mais j'aimerais le faire plus dans le style React. J'ai essayé
onKeyDown={this.onKeyPressed}
sur le composant. Mais il ne réagit pas. Il fonctionne sur les éléments d'entrée si je me souviens bien.
Comment puis-je le faire ?
1 votes
Personnellement, j'aime votre approche. Elle semble être un bon moyen de lier les frappes de touches au document, ce qui est en dehors de la portée de votre composant et ne nécessite pas de se concentrer sur un élément particulier.