목록 보기
React와 Day.js를 활용한 공수 캘린더 직접 구현하기
프론트엔드

React와 Day.js를 활용한 공수 캘린더 직접 구현하기

넥스트리
넥스트리
2026년 10월 22일

두줄요약

React와 Day.js로 공수·메모 등 날짜별 정보를 담는 재사용 가능한 캘린더를 구현했습니다.\n날짜 계산과 UI를 분리하고 빈칸 배열 및 CSS Grid 정렬의 중요성을 설명합니다.

구조와 흐름

  • CustomCalendar의 전체 상태·화면 구성, CalendarMonthGrid의 월 렌더링, buildWeeks의 날짜 배열 생성 역할 분리
  • 날짜별 공수·금액·휴일·메모를 선택 속성의 CalendarDayData로 정의하고 YYYY-MM-DD 키 기반 조회
  • 월 첫날 이전 빈칸과 월별 날짜를 생성한 뒤 7개 단위의 주 배열로 변환

선택 이유

  • Day.js의 startOf, daysInMonth, day, date, format, add, isSame 활용을 통한 날짜 계산 조건 분기 축소
  • 불변 날짜 연산 기반의 월 이동 및 React 상태 변경 흐름 명확화
  • 날짜 계산 로직과 UI 표현 분리를 통한 수정 범위 축소

주의할 점

  • 데이터 저장·조회 구간의 날짜 키 형식 통일 필요
  • 빈 날짜 칸 미렌더링 시 실제 날짜의 요일 위치 이동 가능성
  • 마지막 주 뒤쪽 빈칸 부재에 따른 행 길이 불일치와 CSS 레이아웃 영향

적용해볼 점

  • CSS Grid의 7열 고정과 빈칸 포함 렌더링으로 요일별 날짜 위치 유지
  • 정렬 문제 발생 시 CSS뿐 아니라 주 단위 날짜 배열과 빈칸 구성 함께 점검

다음 읽기

#React 주제를 다룬 다른 회사 글

쏘카 디자인 시스템 2.0 개발기 2편: 기술로 굴리기(웹)

쏘카 디자인 시스템 2.0 웹 개발에서 컴포넌트 구조, 패키지 전략, LLM 활용 방식을 정리했습니다. 상태 결합도에 따라 Hook과 객체를 분리하고, rollup과 Instructions 체계로 운영성을 높였습니다.

쏘카
쏘카
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...