Next.js 개발 일지 D1
Sidebar 개발
구글에서
shadcn-ui
로 사이드바 개발하는 방법을 검색검색 결과에 있는 유튜브 튜토리얼 영상 시청
유튜버가
command
컴포넌트를 사용하는 것을 발견npx shadcn-ui add command
명령어 실행pakcage.json
에cmdk
라는 라이브러리가 설치되는 것을 확인import { Command as CommandPrimitive } from "cmdk"
cmdk
라이브러리에 대해서 조사
맥에서 Command + k 키 누르면 모달로 뜨는 검색창 라이브러리
사용방법은 위 깃허브 링크에서 확인
Command + K 키를 눌렀을때 검색창이 뜨게 하는 기능을 구현하려면
keydown
이벤트 감지가 필요하다는 것을 알게됨위 링크에는 자바스크립트 코드라서 타입 정의에 대한 안내가 없음
처음에는
e
타입이React.KeyboardEvent
인줄 알았음하지만 그렇게 하면 타입 에러가 발생
그냥
KeyboardEvent
타입을 사용해야함React.useEffect(() => { const down = (e: KeyboardEvent) => { if (e.key === "k" && (e.metaKey || e.ctrlKey)) { e.preventDefault(); setOpen((open) => !open); } }; document.addEventListener("keydown", down); return () => document.removeEventListener("keydown", down); }, []);
React.KeyboardEvent
와KeyboardEvent
는 다른 타입React.KeyboardEvent
가 내부적으로NativeKeyboardEvent
KeyboardEvent
타입을 상속하고 있지만 제네릭으로 사용하고 있어서 순수KeyboardEvent
타입과 같지는 않음
CommandDialog
컴포넌트가 모달 역할 수행<CommandDialog open={open} onOpenChange={setOpen}>
Dialog
컴포넌트는 현재 사용중이지 않으므로components/ui/dialog.tsx
파일 제거하고components/ui/command.tsx
파일에서Dialog
관련 코드는 모두 제거
사이드바 UI 구축