我有一个授权组件,包括另一个组件 - 用户名、密码等字段。我尝试创建反应挂钩 useeffect,我想在“X”keyDown 事件上添加订阅。在这个事件中,我想执行 Authorize() 函数,该函数位于组件主体(不是钩子主体)中,并且取决于授权组件状态。
所以,我发现的唯一解决方案是:
useEffect(() => {
const handleKeyDown = (event) => {
event.key === 'X' && defineIsAuthorizationAvailable() && authorize()
}
window.addEventListener('keydown', handleKeyDown)
return () => window.removeEventListener('keydown', handleKeyDown)
})
但我认为它不正确,因为这种订阅/取消订阅会在每次用户状态更改时执行。请帮忙。