From 628632ff5092f1e3cf6c968d9bdfbd9a24f59541 Mon Sep 17 00:00:00 2001 From: Marcin Zelent Date: Fri, 8 Jan 2021 19:47:37 +0100 Subject: Initial commit --- lib/useEvent.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 lib/useEvent.ts (limited to 'lib/useEvent.ts') diff --git a/lib/useEvent.ts b/lib/useEvent.ts new file mode 100644 index 0000000..70d51b1 --- /dev/null +++ b/lib/useEvent.ts @@ -0,0 +1,20 @@ +import { useEffect } from 'react'; + +/** + * A hook for creating event handlers. + */ +export default function useEvent( + event: string, + handler: (e: KeyboardEvent | MouseEvent) => void, + passive = false, +): void { + useEffect(() => { + // initiate the event handler + window.addEventListener(event, handler, passive); + + // this will clean up the event every time the component is re-rendered + return function cleanup() { + window.removeEventListener(event, handler); + }; + }); +} -- cgit v1.2.3