첫번째 시도는 해당 월의 날짜들만 받아왔었고
이번에는 이전 달, 다음 달의 날짜들도 받아오려고 한다.
저번달의 날짜 배열을 만들었다
현재 달의 요일을 숫자로 받아와 일곱칸중에 몇번째 칸까지 for문을 반복할지 정해준다.
그리고 이전달의 마지막 숫자에서 하나씩 빼준다.
이때 배열은 거꾸로 넣어줘야하므로 unshift해준다.
왜냐면 lastDayofPrev는 31-0, 31-1, 31-2..이런식으로 들어가기때문
31,30,29 배열을 unshift해주는것
해당월은 첫번째 달력에서 만든것과 같다
다음달역시 1부터 시작해 마지막 요일을 일곱칸중에서 빼준다
그럼 일주일중에 몇칸이 비어있는지 알 수 있으니까 1부터 증가시켜 넣어준다
그리고서 map으로 해당 배열들을 컴포넌트로 리턴시켜준다
//저번달 날짜 배열
if (startDateOfCurrent !== 0) {
for (let i = 0; i < startDateOfCurrent; i++) {
preDayRow.unshift(lastDayOfPrev - i);
}
}
//해당월 날짜 배열
for (let i = 1; i <= endDayOfCurrent; i++) {
currentDayRow.push(i);
}
//다음달 날짜 배열
if (endDateOfCurrent !== 6) {
for (let i = 1; i < 7 - endDateOfCurrent; i++) {
nextDayRow.push(i);
}
}
const prevComponent = preDayRow.map((item, index) => (
<EmptyDay key={index}>{item}</EmptyDay>
));
const currentComponent = currentDayRow.map((item, index) => (
<Day key={index}>{item}</Day>
));
const nextComponent = nextDayRow.map((item, index) => (
<EmptyDay key={index}>{item}</EmptyDay>
));
return (
<Date>
{prevComponent}
{currentComponent}
{nextComponent}
</Date>
);
'Frontend > React' 카테고리의 다른 글
React + dayjs() 달력만들기 (0) | 2023.01.25 |
---|---|
React + dayjs()로 캘린더 만들기 | 오늘날짜 표시 , 요일 색깔변경 (2) | 2023.01.24 |
React + day.js로 달력만들기 2.. 괜찮은 방법일까? (0) | 2023.01.22 |
React + day.js로 달력만들기 :) (0) | 2023.01.21 |
forwardRef 사용법 (0) | 2022.05.26 |