Javascript 如何设置';onKeyPress';a上的处理程序<;帆布>;你有什么反应?

Javascript 如何设置';onKeyPress';a上的处理程序<;帆布>;你有什么反应?,javascript,events,reactjs,Javascript,Events,Reactjs,我熟悉React及其事件系统,但似乎无法在元素上触发onKeyPress事件。事实上,我也不能让它在上开火 这是相关代码 class MyComponent extends React.Component { render() { return ( <canvas onKeyPress={() => console.log('fired')} /> ) } } 类MyComponent扩展了React.C

我熟悉React及其事件系统,但似乎无法在
元素上触发onKeyPress事件。事实上,我也不能让它在
上开火

这是相关代码

class MyComponent extends React.Component {
    render() {
        return (
            <canvas onKeyPress={() => console.log('fired')} />
        )
    }
}
类MyComponent扩展了React.Component{ render(){ 返回( console.log('fired')}/> ) } } 如果我将
更改为
,它可以正常工作,但不适用于
。这是否意味着react不支持画布元素上的按键事件?我忽略了什么

canvas.addEventListener('keydown', function(event) {
    alert('keydown');
        }, false);

检查是否可以触发上述事件:)

只需将
tabIndex
分配给元素即可获得焦点

<canvas tabIndex="0" onKeyPress={ () => console.log( 'fired' ) } />
console.log('fired')}>

我感谢您的回答,但我希望使用react的合成事件系统可能取决于react版本或您使用的是TypeScript,但我需要使用
tabIndex={0}
,因为
tabIndex
需要一个
数字。