frontend-challenges icon indicating copy to clipboard operation
frontend-challenges copied to clipboard

2 - useClickOutside

Open jsartisan opened this issue 1 year ago • 0 comments

import { useEffect } from "react";

const useClickOutside = (ref, callback) => {
  useEffect(() => {
    const handleClickOutside = (event) => {
      if (ref.current && !ref.current.contains(event.target)) {
        callback();
      }
    };

    document.addEventListener("click", handleClickOutside);

    return () => {
      document.removeEventListener("click", handleClickOutside);
    };
  }, [ref, callback]);
};

export default useClickOutside;

jsartisan avatar Jan 31 '24 17:01 jsartisan