๐๏ธ Calendar & DatePicker ๋ผ์ด๋ธ๋ฌ๋ฆฌ โ
- @Issues - Calendar & DatePicker ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ
- PR - Feature: ScheduleCalendar ์ปดํฌ๋ํธ
- PR - Feature: DatePicker Modal
๐ค ์ ์ง์ ๊ตฌํํ์ง ์๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋์ง?
๋ฌ๋ ฅ UI์ DatePicker๋ ๋จ์ํ ๋ ์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ปดํฌ๋ํธ๊ฐ ์๋๋ผ, ๋ค์๊ณผ ๊ฐ์ ๋ณต์กํ ๋ก์ง์ ํฌํจํ๋ค.
- ์ค๋ ์ฒ๋ฆฌ
- ์๋ณ ์ผ์ ๊ณ์ฐ
- ๋ ์ง ๋ฒ์
- ์/์ฃผ/์ผ ๋ทฐ ์ ํ
- locale(ko) ์ฒ๋ฆฌ
- ์๊ฐ์ ๊ฐ์กฐ/๋นํ์ฑ ๋ ์ง ๋ ๋๋ง
์ด๋ฌํ ๊ธฐ๋ฅ์ ์ง์ ๊ตฌํํ๋ฉด ์ค๋ฅ ๊ฐ๋ฅ์ฑ ์ฆ๊ฐ, ๊ฐ๋ฐ ์ผ์ ์ง์ฐ ๋ฑ์ ๋ฆฌ์คํฌ๊ฐ ์๊ธฐ ๋๋ฌธ์
๊ฒ์ฆ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ์์ ํ๊ณ ํจ์จ์ ์ด๋ผ๊ณ ํ๋จํ๋ค.
์ค์ผ์ค ์บ๋ฆฐ๋ - React Big Calendar โ

๐ ์ ํ ์ด์ โ
- ์ ๋จ์ ์ผ์ ์๊ฐํ์ ์ต์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
React๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์ด ์ปดํฌ๋ํธ ๋จ์ ์ปค์คํฐ๋ง์ด์ง์ด ์ฉ์ดFullCalendar๋ ๊ณ ๋ คํ์ผ๋, JS ๊ธฐ๋ฐ์ด๋ผ React์ฉ ํจํค์ง๊ฐ ๋ํผ ํํ๋ผ ๊ตฌ์กฐ๊ฐ ๋ณต์ก- ์์ฒด์ ์ผ๋ก ๋ ์ง ๊ณ์ฐ์ ์ง์ํ์ง ์์์,
date-fns์ ํจ๊ป ์ฌ์ฉ (๊ณต์ ๋ฌธ์ ์ฐธ๊ณ )date-fns์ฌ์ฉํ ์ด์ ์ ์ ์ฉ- ํจ์ ๋จ์ import โ ํ์ํ ๊ธฐ๋ฅ๋ง ๋ฒ๋ค๋จ
- TypeScript ์ง์ ์ฐ์
- locale(ko) ์ง์
- ์๊ฐ ๊ณ์ฐ/ํฌ๋งทํ ์ด ์ง๊ด์
์ ํธ ๋ถ๋ฆฌ:
tsconst locales = { ko }; export const localizer = dateFnsLocalizer({ format, parse, startOfWeek, getDay, locales, });localizer ์บ๋ฆฐ๋ ์ ์ฉ:
tsx<Calendar localizer={localizer} ... />
๐ฉ ์์ฌ์ด ์ โ
๐ Reference โ
- Github - React Big Calendar
- Docs - React Big Calendar
- npm trends - fullcalendar vs react-big-calendar
- Docs - date-fns
- date-fns vs dayjs vs moment
- Blog - RBC ์ชผ๊ฐ๊ธฐ 1 - CustomToolbar : ๋ ์ง ์ด๋
- Blog - react-big-calendar css ์ปค์คํ ํ๊ธฐ
- Blog - React-Big-Calendar
DatePicker - react-day-picker โ

๐ ์ ํ ์ด์ โ
- Caption, Chevron, Footer ๋ฑ์ ์ปดํฌ๋ํธ ๋จ์๋ก ๊ต์ฒด ๊ฐ๋ฅ โ Tailwind ์ปค์คํฐ๋ง์ด์ง ์ต์
- Disabled ๋ ์ง, ๋ ์ง ์ ํ, locale(ko) ๋ฑ ํ๋ก์ ํธ ์๊ตฌ์ฌํญ ์ถฉ์กฑ
๐ Reference โ
- Github - react-day-picker
- Docs - react-day-picker
- Docs - Function: CaptionLabel()
- Docs - List of Custom Components
- Npm trends - react-datepicker vs react-day-picker
์์ฝ โ
| ๊ธฐ์ค | React Big Calendar | react-day-picker |
|---|---|---|
| ์ญํ | ์ค์ผ์ค ์๊ฐํ | ๋ ์ง ์ ํ |
| ์ ํฉ์ฑ | ์๊ฐ ์ผ์ UI | ์ผ์ ์์ฑ ๋ชจ๋ฌ ์ ๋ ฅํผ |
| ์ปค์คํฐ๋ง์ด์ง | Tailwind ๊ธฐ๋ฐ ์คํ์ผ๋ง ์ฉ์ด | Tailwind ์ปค์คํฐ๋ง์ด์ง ์ต์ |
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ ์ ๊ธฐ์ค (From. ๋ฉํ ๋) โ
- ๋ฒ๋ค ํฌ๊ธฐ
- ํธ๋ฆฌ ์ ฐ์ดํน ์ง์ ์ฌ๋ถ
- ํ์ ๊ธฐ๋ฅ ์ถฉ์กฑ ์ฌ๋ถ
- ์ปค์คํฐ ๋ง์ด์ง ๋์ด๋
VS ๋์ ๊ธฐ์ค..
- ์ปค์คํฐ ๋ง์ด์ง ๋์ด๋
- ๊ณต์ ๋ฌธ์ ๊ฐ๋ ์ฑ
- ๊ตฌ๊ธ๋ง ์ต์ ๋ธ๋ก๊ทธ ๋ ์ง์ ๋ฌธ์ ๋ฐ์ ์ ๊ตฌ๊ธ๋ง์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅํ์ง
- ๊นํ๋ธ ๊ฒ์ ํ ๋ถํธ์บ ํ ํ๋ก์ ํธ ์ผํ
๊ณ ๋ คํ์ง ๋ชปํ ์ ๐๐ซ โ
- ์ค์ ๋ฒ๋ค ํฌ๊ธฐ ๋น๊ต ๋ถ์ฌ
์ ํ ์, ๊ฐ๋ณ๋ค/๋ฌด๊ฒ๋ค๋ ์ ๋ณด๋ฅผ ๋ธ๋ก๊ทธ ๊ธฐ์ค์ผ๋ก๋ง ํ๋จํ๋ค. - Tree-Shaking ์ํฅ ํ์ธ ๋ถ์กฑ
ESM(๊ณต์ ๋ชจ๋ ๋ฐฉ์) ์ฌ๋ถ๋ง ํ์ธํ๊ณ ๋์ด๊ฐ๊ณ , ๋ด๋ถ ๋ชจ๋์ด ์ค์ ๋ก tree-shake๋๋ ๊ตฌ์กฐ์ธ์ง๊น์ง๋ ํ์ ํ์ง ๋ชปํ๋ค. ์ด๋ ์ฅ๊ธฐ์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋ ์ฝ๋๊ฐ ๋ฒ๋ค์ ๋์ ๋๋ ๋ฌธ์ ๋ฅผ ์ผ์ผ์ผ ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ๊ฐ๋ฅ์ฑ์ด ์๋ค. - ์ ๊ทผ์ฑ ๊ฒํ ๋ถ์กฑ
ํนํ DatePicker๋ ํค๋ณด๋ ์กฐ์๊ณผ aria ์์ฑ์ด ์ค์ํ๋ฐ, ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๊ทผ์ฑ ์์ค์ ํ์ธํ์ง ๋ชปํจ. ํ๋ก์ ํธ์์ ์ ๊ทผ์ฑ์ด ์ค์ํด์ง๋ฉด ์ถ๊ฐ ๊ฒํ ํ์