TIL_React datepicker custom

์ •์œค์ˆ™ยท2023๋…„ 6์›” 13์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
169/192
post-thumbnail

๐Ÿ“’ ์˜ค๋Š˜์˜ ๊ณต๋ถ€

1. React datepicker custom

์‚ฌ์šฉ ๋ชฉ์ 

์˜ˆ์•ฝ ํŽ˜์ด์ง€์˜ ๋‚ ์งœ ์„ ํƒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด react date picker ์‚ฌ์šฉ

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  • ์„ค์น˜ npm install react-datepicker --save
  • ๊ธฐ๋ณธ ์ฝ”๋“œ
import DatePicker from 'react-datepicker';
import 'react-datepicker/dist/react-datepicker.css';
import { useState } from 'react';

const Example = () => {
  const [startDate, setStartDate] = useState(new Date());
  return (
    <DatePicker selected={startDate} onChange={(date) => setStartDate(date)} />
  );
};
  • ๊ธฐ๋ณธ UI
    • inline version UI
    • ๋Œ€๋ถ€๋ถ„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚ ์งœ๊ฐ€ ๋ณด์ด๋Š” input์„ ๋ˆ„๋ฅด๋ฉด ๋‹ฌ๋ ฅ์ด open, close๋˜๋Š” ํ˜•์‹์ธ๋ฐ ๋‹ฌ๋ ฅ์ด ํ•ญ์ƒ ๋ณด์ด๊ฒŒ ํ•˜๊ณ  ์‹ถ์–ด์„œ Inline version UI ์„ ํƒ

custom UI

  • ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ์š”์†Œ ํƒญ์„ ํ†ตํ•ด ์›ฌ๋งŒํ•œ CSS๋Š” ์ˆ˜์ • ๊ฐ€๋Šฅ
  • ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ custom UI
    • ํ•ด๋‹น ์›”์ด ์•„๋‹Œ ๋‚ ์งœ๋Š” light gray color ํ‘œ์‹œ
    • ํ† , ์ผ blue, red color ์ถ”๊ฐ€
    • ์š”์ผ ๊ธ€์ž์ˆ˜ ๋ณ€๊ฒฝ(Mo -> M)

ํŒŒ์ผ ์„ค์ •

  • Schedule.tsx - Datepicker๋ฅผ ์“ฐ๋Š” ์ปดํฌ๋„ŒํŠธ
  • schedule.css - css ์ˆ˜์ •์„ ๋งŽ์ด ํ•  ๊ฑฐ๋ผ ๋”ฐ๋กœ ํŒŒ์ผ ์ƒ์„ฑ ํ›„ Schedule.tsx์—์„œ import ํ•˜๊ธฐ

ํ•ด๋‹น ์›”์ด ์•„๋‹Œ ๋‚ ์งœ custom css

  • schedule.css
    • ๊ธฐ์กด css๋ฅผ ๋ฎ์–ด ์“ฐ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— !important ๊ผญ ์“ฐ๊ธฐ(์•ˆ ์“ฐ๋ฉด css๊ฐ€ ์ œ๋Œ€๋กœ ์ ์šฉ ์•ˆ ๋จ)

ํ† , ์ผ color ๋ณ€๊ฒฝ

datepicker์˜ option ํ™•์ธ

  • module ํด๋” ๋‚ด์˜ index.ts ํŒŒ์ผ์—์„œ optionํ™•์ธ ๊ฐ€๋Šฅ
    • ๋ฐ”๋กœ ์ด๋™ํ•˜๊ธฐ : ctrl + <DatePicker/>ํด๋ฆญ

custom css className ์„ค์ •ํ•˜๊ธฐ

  • dayClassName option์„ ํ†ตํ•ด className ์„ค์ •
    • getDay() === 0 = ์ผ์š”์ผ
    • ์ผ์š”์ผ~ํ† ์š”์ผ์€ ๊ฐ๊ฐ 0~6

css ํŒŒ์ผ ์„ค์ •(schedule.css)

์š”์ผ ๊ธ€์ž ์ˆ˜ ํ•œ ์ž๋ฆฌ๋กœ ์„ค์ •

  • formateWeekDay option

๋‚ ์งœ ์„ ํƒ ๊ธฐ๋Šฅ

  • minDate option
    • minDate ์ด์ „ ๋‚ ์งœ๋Š” ์„ ํƒ ๋ถˆ๊ฐ€(color๋Š” ์ž๋™์œผ๋กœ ํšŒ์ƒ‰์ฒ˜๋ฆฌ ๋จ)
  • ๋ณ€์ˆ˜ ์„ค์ •
    • ์˜ค๋Š˜ ๋‚ ์งœ const today = new Date();
  • ์˜ˆ์•ฝ์€ ์ตœ์†Œ 4์ผ ์ „๋ถ€ํ„ฐ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๊ตฌํ˜„
    • 4์ผ * 24์‹œ๊ฐ„ * 60๋ถ„ * 60์ดˆ * 1000(ms๋กœ ํ‘œํ˜„)
  • startDate ์ดˆ๊ธฐ๊ฐ’ ์„ค์ •
    • ์˜ค๋Š˜ ๋‚ ์งœ๊ฐ€ ์•„๋‹Œ ์„ ํƒ ๊ฐ€๋Šฅํ•œ ๋‚ ์งœ๊ฐ€ ์ดˆ๊ธฐ๊ฐ’์ด ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— threeDaysLater ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์„ค์ •

์ตœ์ข…์ฝ”๋“œ

๊ฒฐ๊ณผ๋ฌผ

์ฐธ๊ณ  ์ž๋ฃŒ

npm react-datepicker
react-datepicker ๊ณต์‹๋ฌธ์„œ

profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€