cover

Construye tu propio useOutsideClick

author photo

Héctorbliss

@hectorbliss


Mira el video si prefieres:

robot logo saying hello

No te quedes atrás: Actualízate

Suscríbete para recibir información sobre nuevos frameworks, updates, eventos, tips, hacks y más.

import { type RefObject, useEffect, useRef } from "react"; export const useOutsideClick = <T extends HTMLElement>({ isActive = true, onClickOutside, onClickInside, }: { isActive?: boolean; onClickInside?: (e: MouseEvent) => void; onClickOutside?: (e: MouseEvent) => void; }): RefObject<T> => { const ref = useRef<T>(null); useEffect(() => { if (!isActive) return; const handleClick = (event: MouseEvent) => { ref.current?.contains(event.target as Node) // 🪄 ? onClickInside?.(event) : onClickOutside?.(event); }; document.addEventListener("click", handleClick); return () => document.removeEventListener("click", handleClick); // eslint-disable-next-line react-hooks/exhaustive-deps }, [isActive]); return ref; };
banner

¿Quieres mantenerte al día sobre los próximos cursos y eventos?

Suscríbete a nuestro newsletter

Jamás te enviaremos spam, nunca compartiremos tus datos y puedes cancelar tu suscripción en cualquier momento 😉

robot logo saying hello
facebook icontwitter iconlinkedin iconinstagram iconyoutube icon

© 2016 - 2023 Fixtergeek