aboutsummaryrefslogtreecommitdiff
blob: 70d51b13f4d1332f9b067042bde8379c17e9637c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
    };
  });
}