У меня есть компонент авторизации, в него включены другие компоненты - такие поля, как имя пользователя, пароль и т. Д. Я пытаюсь создать реагирующий перехватчик useeffect, где я хочу добавить подписку на событие keyDown «X». В этом случае я хочу выполнить функцию Authorize (), которая находится в теле компонента (а не в теле крючка) и зависит от состояния компонента авторизации.
Итак, единственное решение, которое я нашел, было:
useEffect(() => {
const handleKeyDown = (event) => {
event.key === 'X' && defineIsAuthorizationAvailable() && authorize()
}
window.addEventListener('keydown', handleKeyDown)
return () => window.removeEventListener('keydown', handleKeyDown)
})
Но я не думаю, что это правильно, потому что эта подписка / отказ от подписки выполняется при каждом изменении состояния пользователя. Пожалуйста помоги.