aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Zelent <marcin@zelent.net>2021-01-08 19:47:37 +0100
committerMarcin Zelent <marcin@zelent.net>2021-01-08 19:47:37 +0100
commit628632ff5092f1e3cf6c968d9bdfbd9a24f59541 (patch)
treefeddb4e82267bba700a15a6a7091f922f48cae40 /lib/useEvent.ts
Initial commit
Diffstat (limited to 'lib/useEvent.ts')
-rw-r--r--lib/useEvent.ts20
1 files changed, 20 insertions, 0 deletions
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);
+ };
+ });
+}