shadcn UI의 checkbox는 왜 indeterminate이라는 상태가 존재하는가?예전에 shadcn으로 checkbox UI를 만들어보다가 shadcn 코드베이스에 indeterminate 라는 상태가 있는 것을 보게 되었다. 체크 상태는 체크/체크 해제 밖에 없는 것 아닌가? 라고 생각했고, 한 번 indeterminate의 정체가 뭔지 살펴보기로 했다. 체크박스에는 체크와 해제 외에 세 번째 상태가 있다. 이 상태의 이름은 indeOct 10 · 9 min readhaseungdev.hashnode.dev
cn()을 왜 쓰는가?시작하기 전에 이전 글(tailwind-merge에서 클래스네임은 어떻게 제어되는가?)에서 twMerge가 내부적으로 어떻게 클래스 충돌을 해소하는지 소스코드 레벨로 살펴봤다. 이번 글은 그 후속편으로, shadcn을 쓰면 항상 따라오는 cn() 함수가 무엇이고 왜 이런 모양인지를 다룬다. cn()의 정체는 shadcn/ui 저장소의 lib/utils.tsSep 5 · 7 min readhaseungdev.hashnode.dev
StyleSheet는 왜 CSS가 아닐까시작하기 전에 최근 React Native를 공부하고 있다. CSS 코드를 작성할 때 사용하는 StyleSheet.create() 가 어떻게 설계되어 있는지 살펴보다가, 주석으로 다음과 같이 나와있는 것을 보게 됐다. A StyleSheet is an abstraction similar to CSS StyleSheets 즉, StyleSheet는 CSSAug 8 · 3 min readhaseungdev.hashnode.dev
코드제로투원 프로젝트 회고약 6개월간 진행한 프로젝트를 2주 전에 끝마쳤다. 원래 사이드프로젝트에 대한 회고를 잘 작성하지 않는 편이어서, 이번에도 고민을 좀 했지만, 여태까지 프로젝트를 하면서 가장 많이 기억에 남은 기억이라 이렇게 회고를 작성하려고 한다. 참여하게 된 계기 올해 1월, 코드제로투원이라는 스터디 플랫폼 사이드프로젝트에 참여했다. 직전에는 자취생들을 위한 식단 추천Jul 17 · 5 min readhaseungdev.hashnode.dev
Tanstack Query에서 staleTime과 gcTime시작하기 전에 사이드 프로젝트를 진행하면서 tanstack query를 사용하고 있다. staleTime, gcTime을 어느 상황에 맞게 적용해야 할 지, 어떻게 적용해야 할 지 고민하던 차에 관련 블로그를 찾아봤다. 일단 staleTime은 캐시된 데이터가 fresh한 상태라고 간주되는 시간, gcTime은 캐시 데이터가 메모리에 유지되는 시간이라고 설Jun 18 · 6 min readhaseungdev.hashnode.dev