25 lines
569 B
TypeScript
25 lines
569 B
TypeScript
import { useEffect, useState } from "react";
|
|
|
|
type MousePosition = {
|
|
x: number;
|
|
y: number;
|
|
};
|
|
|
|
export function useMousePosition(): MousePosition {
|
|
const [mousePosition, setMousePosition] = useState<MousePosition>({ x: 0, y: 0 });
|
|
|
|
useEffect(() => {
|
|
const handleMouseMove = (event: MouseEvent) => {
|
|
setMousePosition({ x: event.clientX, y: event.clientY });
|
|
};
|
|
|
|
window.addEventListener("mousemove", handleMouseMove);
|
|
|
|
return () => {
|
|
window.removeEventListener("mousemove", handleMouseMove);
|
|
};
|
|
}, []);
|
|
|
|
return mousePosition;
|
|
}
|