diff --git a/src/components/Menu/index.tsx b/src/components/Menu/index.tsx index d18a0f7..127981f 100644 --- a/src/components/Menu/index.tsx +++ b/src/components/Menu/index.tsx @@ -15,45 +15,38 @@ type MenuProps = { const Menu = ({ items, component, className }: MenuProps) => { const [open, setOpen] = useState(false); - const ref = useRef(null); + const componentRef = useRef(null); + const parentComponentRef = useRef(); + + const openMenu = () => setOpen(true); + const closeMenu = () => setOpen(false); useEffect(() => { - const wrapper = ref.current; + parentComponentRef.current = document.querySelector(`#${component}`) as HTMLDivElement; - const openMenu = () => setOpen(true); - const closeMenu = () => setOpen(false); - - (document.querySelector(`#${component}`) as HTMLElement)?.addEventListener( - 'mouseenter', - openMenu - ); - ref.current?.addEventListener('mouseleave', closeMenu); + parentComponentRef.current?.addEventListener('mouseenter', openMenu); + componentRef.current?.addEventListener('mouseleave', closeMenu); return () => { - ( - document.querySelector(`#${component}`) as HTMLElement - )?.removeEventListener('mouseenter', openMenu); - wrapper?.addEventListener('mouseleave', closeMenu); + parentComponentRef.current?.removeEventListener('mouseenter', openMenu); + componentRef.current?.removeEventListener('mouseleave', closeMenu); }; - - // eslint-disable-next-line - }, [ref.current]); + }, []); return ( {open && (
    {items.map(({ icon, label, avoid, action }) => ( - // eslint-disable-next-line
  • { if (action) {