--- title: useClickInside tags: hooks,effect,event,intermediate --- A hook that handles the event of clicking inside the wrapped component. - Create a custom hook that takes a `ref` and a `callback` to handle the `click` event. - Use the `React.useEffect()` hook to append and clean up the `click` event. - Use the `React.useRef()` hook to create a `ref` for your click component and pass it to the `useClickInside` hook. ```jsx const useClickInside = (ref, callback) => { const handleClick = e => { if (ref.current && ref.current.contains(e.target)) { callback(); } }; React.useEffect(() => { document.addEventListener('click', handleClick); return () => { document.removeEventListener('click', handleClick); }; }); }; ``` ```jsx const ClickBox = ({ onClickInside }) => { const clickRef = React.useRef(); useClickInside(clickRef, onClickInside); return (
Click inside this element