Outside Click Dropdown - React Coding Interview Question
- 외부 클릭 시 닫히는 드롭다운 메뉴를 구현하는 것이 핵심 목표입니다. 🎯
useState 훅을 사용하여 드롭다운의 열림/닫힘 상태를 불리언 값으로 관리합니다. ↔️
useRef 훅으로 드롭다운의 DOM 요소를 참조하여, 클릭 이벤트가 해당 요소의 내부에 발생했는지 외부에 발생했는지 판단합니다. 📌
useEffect 훅을 활용하여 드롭다운이 열릴 때 document에 mousedown 이벤트 리스너를 추가하고, 닫히거나 컴포넌트 언마운트 시 리스너를 제거하여 메모리 누수를 방지합니다. 👂
ref.current.contains(event.target) 메서드를 통해 클릭 대상이 드롭다운 내부에 있는지 효율적으로 확인하여 외부 클릭을 감지합니다. 🔍
- 버튼 클릭 시
setOpen(prev => !prev)를 사용하여 드롭다운의 가시성 상태를 토글합니다. 🔄
open && <MenuComponent />와 같은 조건부 렌더링을 통해 드롭다운이 열려 있을 때만 메뉴 항목을 표시합니다. ✨
useEffect의 클린업 함수를 통해 이벤트 리스너를 명시적으로 제거하는 것이 성능과 안정성 측면에서 매우 중요합니다. 🧹
- 이 문제는 React 훅스, 이벤트 처리, DOM 조작 등 React의 핵심 개념 이해도를 측정하는 고전적인 면접 질문입니다. 💡
데브허브 | DEVHUB | Outside Click Dropdown - React Coding Interview Question