جافا سكريبت - كيف يمكنني إعداد معالج 'onKeyPress' على عنصر <canvas> في React؟


أنا ملم بـ React ونظام الأحداث الخاص به، ولكن لا يبدو أنني قادر على جعل حدث onKeyPress يعمل على عنصر <canvas>. في الواقع، لا أستطيع جعله يعمل على عنصر <div> أيضًا.

إليك الكود ذي الصلة

class MyComponent extends React.Component {
    render() {
        return (
            <canvas onKeyPress={() => console.log('fired')} />
        )
    }
}

يعمل بشكل جيد إذا قمت بتغيير <canvas> ليكون <input>، لكنه لا يعمل مع <div>. هل هذا يعني أن React ببساطة لا يدعم أحداث keyPress على عناصر canvas؟ ما الذي أغفله؟

الإجابة رقم 1

فقط قم بتعيين tabIndex للعنصر للحصول على التركيز.

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

الإجابة رقم 2

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

تحقق مما إذا كان بإمكانك إطلاق الحدث أعلاه :)