Skip to main content

useHover

useHover.tsx

import { useState, useRef, useEffect } from "react";

function useHover(): [React.MutableRefObject<any>, boolean] {
const [isHovering, setIsHovering] = useState(false);
const ref = useRef(null);

const handleMouseOver = () => setIsHovering(true);
const handleMouseOut = () => setIsHovering(false);

useEffect(() => {
const node = ref.current;
if (node) {
node.addEventListener("mouseover", handleMouseOver);
node.addEventListener("mouseout", handleMouseOut);

return () => {
node.removeEventListener("mouseover", handleMouseOver);
node.removeEventListener