javascript - Kuinka asetan 'onKeyPress'-käsittelijän <canvas>:lle Reactissa?
Olen perehtynyt Reactiin ja sen tapahtumajärjestelmään, mutta en tunnu saavan onKeyPress-tapahtumaa laukeamaan <canvas>-elementissä. Itse asiassa en saa sitä laukeamaan myöskään <div>-elementissä.
Tässä on asiaankuuluva koodi
class MyComponent extends React.Component {
render() {
return (
<canvas onKeyPress={() => console.log('fired')} />
)
}
}
Se toimii hyvin, jos vaihdan <canvas>:n <input>:ksi, mutta ei toimi <div>:lle. Tarkoittaako tämä, että React ei yksinkertaisesti tue keyPress-tapahtumia canvas-elementeissä? Mitä olen jättämässä huomiotta?
Vastaus #1
Määritä vain tabIndex elementille saadaksesi fokus.
<canvas tabIndex="0" onKeyPress={ () => console.log( 'fired' ) } />
Vastaus #2
canvas.addEventListener('keydown', function(event) {
alert('keydown');
}, false);
Tarkista, voitko laukaista yllä olevan tapahtuman :)
