Motile UI

useClickOutside

지정된 요소 외부를 클릭했을 때 콜백을 실행하는 Hook입니다. Dropdown, Popover, Modal 등을 외부 클릭으로 닫을 때 사용합니다. 마우스와 터치 이벤트를 모두 지원합니다.

미리보기

드롭다운 외부를 클릭하면 자동으로 닫힙니다

사용법

1import { useState, useRef } from "react";
2import { Button } from "motile-ui";
3import { useClickOutside } from "motile-ui/hooks";
4
5export function ClickOutsideDemo() {
6  const [isOpen, setIsOpen] = useState(false);
7  const dropdownRef = useRef<HTMLDivElement>(null);
8  const buttonRef = useRef<HTMLButtonElement>(null);
9
10  useClickOutside({
11    refs: [dropdownRef, buttonRef] as React.RefObject<HTMLElement>[],
12    handler: () => setIsOpen(false),
13    enabled: isOpen,
14  });
15
16  return (
17    <div>
18      <Button
19        ref={buttonRef}
20        onClick={() => setIsOpen(!isOpen)}
21      >
22        {isOpen ? "드롭다운 닫기" : "드롭다운 열기"}
23      </Button>
24
25      {isOpen && (
26        <div ref={dropdownRef} className="dropdown">
27          <div>메뉴 항목 1</div>
28          <div>메뉴 항목 2</div>
29          <div>메뉴 항목 3</div>
30        </div>
31      )}
32    </div>
33  );
34}

API 레퍼런스

속성타입기본값설명
refsRefObject<HTMLElement>[]-클릭 감지에서 제외할 요소들의 ref 배열 (이 요소들 외부 클릭 시 handler 실행)
handler(event: MouseEvent | TouchEvent) => void-외부 클릭 시 실행할 콜백 함수
enabledbooleantrueHook 활성화 여부
useClickOutside | Motile UI