# useHover > Tracks whether the pointer is hovering an element. - Category: DOM - Package: `hookli` (install with `npm i hookli`) - Docs: https://hookli.vercel.app/docs/use-hover ## Signature ```ts useHover(elementRef: RefObject): boolean ``` ## Parameters - `elementRef`: `RefObject` — Ref to the element whose hover state to track. mouseenter/mouseleave are attached to it and cleaned up automatically. ## Returns - `isHovered`: `boolean` — True while the pointer is over the element, false otherwise. Starts false on the server and until the first mouseenter. ## Usage ```tsx import { useRef } from "react"; import { useHover } from "hookli"; export function Demo() { const boxRef = useRef(null); const isHovered = useHover(boxRef); return (
{isHovered ? "Pointer is over me" : "Hover this panel"}
); } ``` ## Source `src/hooks/use-hover/use-hover.ts` ```ts import { RefObject, useState } from "react"; import { useEventListener } from "../use-event-listener/use-event-listener"; export const useHover = ( elementRef: RefObject, ): boolean => { const [isHovered, setIsHovered] = useState(false); useEventListener("mouseenter", () => setIsHovered(true), elementRef); useEventListener("mouseleave", () => setIsHovered(false), elementRef); return isHovered; }; ```