From c79b904ab2e6597dbd1f7cdb49a139e30aa0eee6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Gawron?= Date: Mon, 19 Feb 2024 14:00:38 +0100 Subject: [PATCH] add useArrowKeysHandler --- src/hooks/useArrowKeysHandler.ts | 35 ++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/hooks/useArrowKeysHandler.ts diff --git a/src/hooks/useArrowKeysHandler.ts b/src/hooks/useArrowKeysHandler.ts new file mode 100644 index 0000000..6733fff --- /dev/null +++ b/src/hooks/useArrowKeysHandler.ts @@ -0,0 +1,35 @@ +import { useEffect} from 'react'; + +const useArrowKeysHandler = (onChangeDirection: (direction: string) => void) => { + + useEffect(() => { + const handleKeyDown = (event:KeyboardEvent) => { + switch (event.key) { + case 'ArrowUp': + onChangeDirection('up'); + break; + case 'ArrowDown': + onChangeDirection('down'); + break; + case 'ArrowLeft': + onChangeDirection('left'); + break; + case 'ArrowRight': + onChangeDirection('right'); + break; + default: + break; + } + }; + + window.addEventListener('keydown', handleKeyDown); + + return () => { + window.removeEventListener('keydown', handleKeyDown); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + +}; + +export default useArrowKeysHandler; \ No newline at end of file