跳到主要内容

useClickAway

examples

查看控制台输出

click away

source code

import { MutableRefObject, useEffect } from 'react';

const useClickAway = (
ref: MutableRefObject<HTMLElement | null>,
handle: (event: Event) => void,
) => {
useEffect(() => {
const listener = (event: Event) => {
const el = ref.current;

if (!event || !el || el.contains((event as any).target)) return;

handle(event);
};

document.addEventListener('click', listener);

return () => document.removeEventListener('click', listener);
}, [ref, handle]);
};

export default useClickAway;