Accessing DOM nodes
tsx
const inputRef = useRef<HTMLInputElement | null>(null);
<button onClick={() => inputRef.current?.focus()}>Focus</button>
<input ref={inputRef} />Mutable values across renders
tsx
const renderCount = useRef(0);
renderCount.current += 1;useRef vs state
useRef: value changes do not trigger re-renderuseState: value changes trigger re-render
Use cases
- Imperative DOM actions
- Store timer IDs
- Previous values tracking
Next, we will optimize with useMemo and useCallback.