typescriptbeginner
useHover Hook
Tracks whether an element is being hovered using mouse enter/leave events with a ref.
typescriptPress ⌘/Ctrl + Shift + C to copy
import { useState, useRef, useEffect, RefObject } from 'react';
export function useHover<T extends HTMLElement>(): [RefObject<T | null>, boolean] {
const [hovered, setHovered] = useState(false);
const ref = useRef<T | null>(null);
useEffect(() => {
const node = ref.current;
if (!node) return;
const handleEnter = () => setHovered(true);
const handleLeave = () => setHovered(false);
node.addEventListener('mouseenter', handleEnter);
node.addEventListener('mouseleave', handleLeave);
return () => {
node.removeEventListener('mouseenter', handleEnter);
node.removeEventListener('mouseleave', handleLeave);
};
}, []);
return [ref, hovered];
}Use Cases
- Tooltip triggers
- Hover effects
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
typescriptbeginner
useClipboard Hook (Advanced)
Clipboard hook with read, write, and auto-reset of the copied state after a timeout.
Best for: Copy-to-clipboard buttons
#hooks#clipboard
typescriptintermediate
useLongPress Hook
Detects long press gestures on touch and mouse devices with configurable threshold.
Best for: Context menus
#hooks#gesture
typescriptintermediate
usePrefetch Hook
Prefetches data or resources when the user hovers over an element to reduce perceived latency.
Best for: Route prefetching
#hooks#prefetch
typescriptbeginner
useClickAway Hook
Fires a callback when a click is detected outside the referenced element.
Best for: Dropdown close on outside click
#hooks#click-outside