useRef vs window.addEventListener when onKeyDown in div
2024. 1. 30. 17:33ㆍ개발/토막난 상식
반응형
1번 ref 로 닫기 기능
// 메뉴가 열리면 메뉴에 포커스
const menuRef = useRef(null);
useEffect(() => {
if (menuRef.current) {
menuRef.current.focus();
}
}, []);
return (
<div
style={{
left: 0,
top: 0,
backgroundColor: "black",
display: 'flex',
flexDirection: 'row',
opacity: '0.97'
}}
className={'w-full h-full fixed z-[99]'}
tabIndex="0"
ref={menuRef}
onKeyDown={(e) => e.key === 'Escape' && setMenuOpen(false)}
/>
2번 useEffect로 닫기 기능
useEffect(() => {
const handleKeyDown = (event) => {
if (event.key === 'Escape') {
setMenuOpen(false);
}
};
window.addEventListener('keydown', handleKeyDown);
return () => {
window.removeEventListener('keydown', handleKeyDown);
};
}, [setMenuOpen]);
보기에도 관리에도 2번이 좋아보인다 (함수가 많아지면)
1번은 포커스 관리를 추가적으로 해줘야한다. (사용자가 tab을 누르고 esc를 누르면 작동 안함)
2번은 메모리 신경써서 remove해줘야함
내선택: 2번
반응형
'개발 > 토막난 상식' 카테고리의 다른 글
InfluxDB와 Elasticsearch (0) | 2024.02.14 |
---|---|
상태 관리 순위 와 Zustand 예시 (1) | 2024.02.08 |
웹스퀘어 (0) | 2024.01.05 |
JAVA 1.8 구버전으로 이클립스 다운로드 하는법 (2) | 2024.01.03 |
ESLint: 'eslint'의 경로를 지정하세요. 파이참 (0) | 2023.12.15 |