react-reuse-hooks
Version:
A collection of 30+ production-ready reusable React hooks for web apps, covering state, effects, media, forms, and utilities.
25 lines (18 loc) • 677 B
JavaScript
import { useState, useRef, useEffect } from "react";
export function useHover() {
const [hovered, setHovered] = useState(false);
const ref = useRef();
useEffect(() => {
const node = ref.current;
if (!node) return;
const handleMouseEnter = () => setHovered(true);
const handleMouseLeave = () => setHovered(false);
node.addEventListener("mouseenter", handleMouseEnter);
node.addEventListener("mouseleave", handleMouseLeave);
return () => {
node.removeEventListener("mouseenter", handleMouseEnter);
node.removeEventListener("mouseleave", handleMouseLeave);
};
}, [ref]);
return [ref, hovered];
}