[React] react-calendar 적용하기

2024. 5. 15. 16:10·React
목차
  1. 설치
  2. import하기
  3. 표시하기
  4. react-calendar 커스텀하기
  5. 심화
  6. 일정추가해주기
  7. 👇🏻참고
728x90
반응형

리액트에는 react-calendar와 react-datepicker등으로 캘린더를 구현할 수 있다.

설치

npm i react-calendar

import하기

import Calendar from 'react-calendar';
import 'react-calendar/dist/Calendar.css'; // css import
  • react-calendar를 설치하고 import해준다.
  • 아래의 css는 react-calendar에서 기본적으로 제공해주는 css파일이다.

표시하기

<div>
      <Calendar onChange={onChange} value={value} />
</div>

위와 같이 했으면 Calendar를 가져와서 표시해주면 캘린더가 보이게 된다.

calendar 설정하기
calendar 설정하기

하지만, 캘린더를 클릭시 내가 클릭한 날짜를 보여주게 해주고 싶으면 아래와 같이 코드를 추가해주면 된다.

npm i moment

우선, moment를 설치해준다.

return (
    <div>
      <Calendar onChange={onChange} value={value} />
         <div className="text-gray-500 mt-4">
           {moment(value).format("YYYY년 MM월 DD일")} 
         </div>
    </div>
  );

위와 같이 코드를 해주면 위의 사진처럼 날짜가 보이게 된다.

react-calendar 커스텀하기

아래의 참고 사이트의 두번째 사이트를 참고하면 더 좋다.

기본적으로 제공해주는 css파일이 있지만 이를 더 꾸며주고 싶다면 node_modules > react-calendar > dist > Calendar.css를 들어가서 내가 원하는 부분을 더 꾸며주면 된다.

심화

캘린더와 투두를 설정한 모습
캘린더와 투두를 설정한 모습

일정추가해주기

내 경우 일정추가를 해주기 위해 캘린더를 추가해준 것임으로 날짜를 보이게 해주었다. 또한, 여기에 일정을 추가한 것을 시각적으로 보이기 위해 css를 추가해줄 것이다.

날짜의 아래쪽에 보면 빨간 동그라미가 보일 것이다. 이를 추가하기 위한 작업을 해줄 것이다.

1) 날짜 추가하기

const dayList = [
    '2023-03-10',
    '2023-03-21',
    '2023-04-02',
    '2023-04-14',
    '2023-04-27',
  ];

db를 사용하지 않는다면 일일이 날짜를 추가해준 배열을 만든다. "YYYY-MM-DD"형식으로 만든다.

2) Calendar에 표시해주기

<Calendar
          onChange={setDate}
          value={date}
          formatDay={(locale, date) => moment(date).format("DD")}
          tileContent={({ date }) => {
            if (dayList.includes(moment(date).format("YYYY-MM-DD"))) {
              return <div className="dotStyle"></div>;
            }
          }}
        />

그리고 Calendar에서 dayList에서 "YYYY-MM-DD"를 포함한 string이 있는지 확인하고 이가 있다면 dotStyle이라는 스타일이 있는 div를 만들어준다. 나의 경우 tailwindcss를 써서 className안에 넣어준 것임으로, style안에 넣어주는 것이 정확하다.

3) css 파일 추가하기

.dotStyle{
  height: 8px;
  width: 8px;
  background-color: #f87171;
  border-radius: 50%;
  display: flex;
  margin-left: 1px;
}

👇🏻참고

https://velog.io/@khy226/리액트-앱에-달력react-calendar-적용하기

https://velog.io/@pikadev1771/react-calendar-커스텀하기-날짜-변환-현재-달-구하기-콘텐츠-추가하기

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)
  1. 설치
  2. import하기
  3. 표시하기
  4. react-calendar 커스텀하기
  5. 심화
  6. 일정추가해주기
  7. 👇🏻참고
'React' 카테고리의 다른 글
  • [React] Global Style 적용하기
  • [React] Modal 사용하여 팝업창 만들기
  • [React] 다크모드 구현하기
  • [React] 무한스크롤 구현하기
Uheeking
Uheeking
안녕하세요. react, flutter, node.js에 관련해서 글을 쓰는 블로그입니다.
Uheeking
Uheeking의 it로그
Uheeking
전체
오늘
어제

공지사항

  • 분류 전체보기 (254)
    • React (48)
    • Node.js (32)
    • Next.js (22)
    • Vue.js (15)
    • javascript (3)
    • Django (19)
    • etc (23)
    • Flutter (30)
    • Error (16)
    • AWS (11)
    • docker & Kubernetes (32)
    • git (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
250x250

인기 글

태그

  • supabase
  • 플러터
  • sequelize
  • 넥스트
  • docker
  • Django
  • AWS
  • Express
  • 리액트
  • useEffect
  • Create
  • 장고
  • 쿠버네티스
  • 노드
  • React
  • Props
  • error
  • node.js
  • next.js
  • 도커
  • MySQL
  • Vue.js
  • mosquitto
  • flutter
  • 티스토리챌린지
  • 오블완
  • SSR
  • NEXT
  • Kubernetes
  • firebase

최근 댓글

최근 글

250x250
hELLO· Designed By정상우.v4.5.2
Uheeking
[React] react-calendar 적용하기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.