Я нашел 3 ошибки здесь,
- По умолчанию горячие клавиши отключены для элементов INPUT SELECT TEXTAREA. Нужно добавить блок кода для включения горячих клавиш.
- Вы не импортируете
useEffect
. - Я не думаю, что возврат необходим при
hotKeys
обратном вызове.
Добавьте этот блок кода, чтобы включить горячие клавиши в заблокированные элементы
hotkeys.filter = function(event){
var tagName = (event.target || event.srcElement).tagName;
hotkeys.setScope(/^(INPUT|TEXTAREA|SELECT)$/.test(tagName) ? 'input' : 'other');
return true;
}
Проверьте рабочую скрипку
Это пример кода рабочей скрипки.
import React, {useEffect} from 'react'
import hotkeys from 'hotkeys-js'
export default function Hello (props) {
useEffect(() => {
hotkeys.filter = function(event){
var tagName = (event.target || event.srcElement).tagName;
hotkeys.setScope(/^(INPUT|TEXTAREA|SELECT)$/.test(tagName) ?
'input' : 'other');
return true;
}
hotkeys('Enter', event => {
event.stopPropagation()
event.preventDefault()
console.log('Hotkey Pressed')
props.handleSubmit(); // this should do the job.
})
return () => {
hotkeys.unbind('Enter')
}
}, [])
return (
<div>
<input type='text' autoFocus />
<button onClick={props.handleSubmit}
>Submit</button>
</div>
)
}