tom/use-event-listener

This commit is contained in:
Tom Moor
2022-04-17 11:00:28 -07:00
parent e4e98286f4
commit 2fb0182e16
7 changed files with 99 additions and 68 deletions

View File

@@ -1,5 +1,6 @@
import { throttle } from "lodash";
import * as React from "react";
import useEventListener from "./useEventListener";
/**
* Mouse position as a tuple of [x, y]
@@ -17,15 +18,15 @@ export const useMousePosition = () => {
0,
]);
const updateMousePosition = throttle((ev: MouseEvent) => {
setMousePosition([ev.clientX, ev.clientY]);
}, 200);
const updateMousePosition = React.useMemo(
() =>
throttle((ev: MouseEvent) => {
setMousePosition([ev.clientX, ev.clientY]);
}, 200),
[]
);
React.useEffect(() => {
window.addEventListener("mousemove", updateMousePosition);
return () => window.removeEventListener("mousemove", updateMousePosition);
}, []);
useEventListener("mousemove", updateMousePosition);
return mousePosition;
};