Хук useEventListener и useKeyPress , похоже, имеют несколько иную реализацию, но я пытаюсь выяснить, какой инструмент лучше использовать для моей спецификации c вариант использования.
У меня есть настраиваемое раскрывающееся меню выбора, и я хочу слушать клавиши со стрелкой вниз, вверх и ввода. Моя проблема, или, скорее, вопрос, относительно ловушки useKeyPress, заключается в том, что происходит два рендеринга + я не совсем уверен, почему существует промежуточное useState.
Например, используя ловушку useKeyPress, если пользователь нажимает стрелку вниз, прослушиватели событий срабатывают дважды, один из них возвращает true и сразу возвращает false onKeyUp:
useEffect(() => {
window.addEventListener('keydown', downHandler);
window.addEventListener('keyup', upHandler);
return () => {
window.removeEventListener('keydown', downHandler);
window.removeEventListener('keyup', upHandler);
};
}, []);
Кроме того, я не уверен, почему это происходит,
const [keyPressed, setKeyPressed] = useState(false);
Я просто хочу прояснить разницу между этими двумя и какой из них использовать для моего варианта использования.