javascript - Kako postaviti 'onKeyPress' handler na <canvas> u Reactu?
Upoznat sam s Reactom i njegovim sustavom događaja, ali čini se da ne mogu pokrenuti onKeyPress događaj na <canvas> elementu. Zapravo, ne mogu ga pokrenuti niti na <div> elementu.
Evo relevantnog koda
class MyComponent extends React.Component {
render() {
return (
<canvas onKeyPress={() => console.log('fired')} />
)
}
}
Radi dobro ako promijenim <canvas> u <input>, ali ne radi za <div>. Znači li to da React jednostavno ne podržava keyPress događaje na canvas elementima? Što propuštam?
Odgovor #1
Jednostavno dodijelite tabIndex elementu kako bi dobio fokus.
<canvas tabIndex="0" onKeyPress={ () => console.log( 'fired' ) } />
Odgovor #2
canvas.addEventListener('keydown', function(event) {
alert('keydown');
}, false);
Provjeri možeš li pokrenuti gornji događaj :)
