reactuals
Version:
A useful package providing a collection of 50+ React hooks and utilities to simplify React development.
23 lines (22 loc) • 705 B
JavaScript
import { useRef, useState, useEffect } from "react";
/**
* Detects hover state of an element.
*/
export function useHover() {
const ref = useRef(null);
const [hovered, setHovered] = useState(false);
useEffect(() => {
const el = ref.current;
if (!el)
return;
const onEnter = () => setHovered(true);
const onLeave = () => setHovered(false);
el.addEventListener("mouseenter", onEnter);
el.addEventListener("mouseleave", onLeave);
return () => {
el.removeEventListener("mouseenter", onEnter);
el.removeEventListener("mouseleave", onLeave);
};
}, [ref.current]);
return [ref, hovered];
}