UNPKG

rsuite

Version:

A suite of react components

28 lines 717 B
'use client'; import { useEffect, useRef } from 'react'; export function useClickOutside({ enabled = true, isOutside, handle }) { const isOutsideRef = useRef(isOutside); const handleRef = useRef(handle); useEffect(() => { isOutsideRef.current = isOutside; handleRef.current = handle; }, [isOutside, handle]); useEffect(() => { if (enabled) { const eventHandler = event => { if (isOutsideRef.current?.(event)) { handleRef.current?.(event); } }; window.addEventListener('mousedown', eventHandler); return () => { window.removeEventListener('mousedown', eventHandler); }; } }, [enabled]); } export default useClickOutside;