์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- styled-components
- ํ ์คํธ ์ธํธ
- ios
- java 11 ์ค์น
- ํผ๊ณต๋จธ์
- svg์
- ๋งฅ๋ถ
- ๋จธ์ ๋ฌ๋
- ๋ฅ๋ฌ๋
- ์ทํ๊ท๊ฑธ์ด
- M1
- ์ฒดํฌ๋ฐ์ค์ปค์คํ
- CSS
- ๊นํ์ฌ์ดํธ
- react
- XCode
- ์์ด๋์ค๋ณต
- ํผ์ ๊ณต๋ถํ๋ ๋จธ์ ๋ฌ๋
- ICT์ธํด์ญ
- ICT์ง์
- axios์ธ์คํด์ค
- ICTํ๊ธฐ
- ํ๋ก ํธ์๋
- ๊นํ์๋ฌ
- ์์
- api๊ณตํตํ
- ์๋ฆฟ์์ ํ
- ์ปด๊ณต์ ๋ฐฐ
- ์ปค์คํ
- ๊ณผ๋์ ํฉ๊ณผ ๊ณผ์์ ํฉ
- Today
- Total
Hi-๋๐ High-๋โ๏ธ
[React] Datepicker ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ๋ฒ + ์๊ฐ ์ถ๊ฐ ๋ณธ๋ฌธ
1. ์ค์น ๋ฐฉ๋ฒ
์ค์น ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค. react-datepicker
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ๋๋ค.
npm install react-datepicker
2. ์ฌ์ฉ ๋ฐฉ๋ฒ
import
import DatePicker from "react-datepicker"; // ๊ธฐ๋ณธ ์ค์ 1
import "react-datepicker/dist/react-datepicker.css"; // ๊ธฐ๋ณธ ์ค์ 2
import { ko } from "date-fns/esm/locale"; // ํ๊ตญ์ด ์ค์
๋จผ์ ์ํ๋ ํ์ผ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ import ํ๋ค. ์์ ๋๊ฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ฌ์ค๋ค.
๊ธฐ๋ณธ ์ธ์ด๋ ์์ด๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์ ํ๊ตญ์ด๋ก ์ค์ ํ๊ธฐ ์ํด์๋ ์์ ๊ฐ์ด import ํด์ผ ํ๋ค.
๋ณ์ ์ ์ธ
const today = new Date();
const [currentTime, setCurrentTime] = useState(today);
new Date();
๋ฅผ ํตํด ํ์ฌ ์๊ฐ๊ณผ ๋ ์ง๋ฅผ ๋ํ๋ด๋ Date ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ด๋ฅผ today
๋ผ๋ ๋ณ์์ ํ ๋นํ๋ค. ๊ทธ๋ฆฌ๊ณ today
๋ฅผ currentTime
์ ์ด๊ธฐ ๊ฐ์ผ๋ก ์ค์ ํด์ฃผ์ด ํ์ฌ ์๊ฐ์ด Datepicker์ ๊ธฐ๋ณธ๊ฐ์ด ๋๋๋ก ํ๋ค.
์ปดํฌ๋ํธ
<StyledDatePicker
locale={ko} // ํ๊ตญ์ด ์ค์
dateFormat="yyyy.MM.dd" // ๋ ์ง ํ์ ์ง์
selected={currentTime} // ์ ํ๋ ๋ ์ง์ ์๊ฐ์ currentTime ๋ณ์์์ ๊ฐ์ ธ์ด
onChange={(date) => { // Datepicker์์ ์ ํ๋ ๊ฐ์ ์
๋ฐ์ดํธ
setCurrentTime(date)
}}
/>
๋จผ์ ํ๊ตญ ๊ธฐ์ค์ผ๋ก ๋ ์ง์ ์๊ฐ์ ํ์ํ๋๋ก locale={ko}
์ค์ ์ ํด์ฃผ๊ณ ๋ ์ง๋ฅผ ์ด๋ค ํ์์ผ๋ก ํ์ํ ์ง ์ง์ ํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ Datepicker์์ ์ ํ๋ ๋ ์ง์ ์๊ฐ์ currentTime
๋ณ์์์ ๊ฐ์ ธ์ค๋๋ก ํ๋ค. currentTime
์ ์์์ useState ํ
์ผ๋ก ์ ์ธ๋ ์ํ ๋ณ์๋ก, ํ์ฌ ์๊ฐ๊ณผ ๋ ์ง๋ฅผ ๋ํ๋ด๋ Date ๊ฐ์ฒด๊ฐ ์ด๊ธฐ๊ฐ์ผ๋ก ์ค์ ๋์ด ์๋ค.
OnChange
๋ฅผ ํตํด Datepicker์์ ๋ ์ง์ ์๊ฐ์ด ์ ํ๋์์ ๋ ์ ํ๋ ๊ฐ์ setCurrentTime
์ ์ฌ์ฉํ์ฌ currentTime
์ ์
๋ฐ์ดํธํ๋ค.
css ์ ์ฉ
๋๋ DatePicker๋ฅผ styled-components
๋ฅผ ์ด์ฉํ์ฌ customํด์ ์ฌ์ฉํ๋ค.
const StyledDatePicker = styled(DatePicker)`
width: 170px;
height: 37px;
border: none;
font-weight: 400;
font-size: 15px;
line-height: 100%;
background-color: transparent;
`;
3. ์๊ฐ ์ถ๊ฐ
์ ๊ธ์ผ'์'๋ฅผ ํํํ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ผ ํ๊ธฐ ๋๋ฌธ์, ์๊ฐ๋ ์ ๋ ฅ๋ฐ๊ณ ์ ํ๋ค. ์๊ฐ์ ํ์ํ๊ธฐ ์ํด์๋ ๋ช ๊ฐ์ง๋ง ์ถ๊ฐํ๋ฉด ๋๋ค.
<StyledDatePicker
locale={ko}
dateFormat="yyyy.MM.dd HH:mm" // ์๊ฐ ํ์ ์ถ๊ฐ
selected={currentTime}
showTimeSelect // ์๊ฐ ์ ํ ๊ธฐ๋ฅ ํ์ฑํ
timeFormat="HH:mm" // Datepicker์์ ์๊ฐ์ ์ด๋ค ํ์์ผ๋ก ํํํ ์ง ์ง์
timeIntervals={1} // ๋ช ๋ถ ๋จ์๋ก ์ ํํ ์ ์๋์ง ์ง์
onChange={(date) => {
setCurrentTime(date)
}}
/>
๋ฌ๋ผ์ง ๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ๋ค.
์๊ฐ ์ ํ ๊ธฐ๋ฅ ํ์ฑํ๋ฅผ ์ํด showTimeSelect
์ต์
์ ์ถ๊ฐํ์๊ณ , dateFormat
์ ์๊ฐ ํ์๋ ์ถ๊ฐํ์๋ค.
๋ํ timeFormat
์ ํตํด Datepicker์์ ์๊ฐ์ ์ด๋ค ํ์์ผ๋ก ํํํ ์ง ์ง์ ํ์์ผ๋ฉฐ, ๋ช ๋ถ ๋จ์๋ก ์ ํํ ์ ์๋์ง๋ฅผ timeIntervals={1}
์ ํตํด ์ง์ ํ์๋ค.
4. ๊ฒฐ๊ณผ
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] RadioButton ์ปค์คํ ํ๊ธฐ with styled-components (2) | 2023.10.27 |
---|---|
[React] Toggle Component ๋ง๋ค๊ธฐ (0) | 2023.07.19 |
[React] ์๋ฌ ํด๊ฒฐ - "sh: react-scripts: command not found" (0) | 2023.07.04 |
[React] API ์ค์ ๊ณตํตํ - ํ๊ฒฝ๋ณ์, axios ์ธ์คํด์ค ์ฌ์ฉํ๊ธฐ (0) | 2023.05.08 |
[React] API ์ฐ๋ํ๊ธฐ with axios (0) | 2023.05.08 |