달력을 만들어 보자 :)
~ dayjs 공식홈페이지 ~
달력을 구현하기 위한 로직을 정리하자 ~ :)
1. 이번달의 시작 요일을 알아야 한다.
1-1 . dayjs 에서 startOf는 지정 시간 단위의 시작을 알려준다.
1-2 . dayjs().startOf("month")는 object를 리턴한다.
1-3. dayjs().startOf("month").format("d") 를 이용해 필요한 포맷으로 리턴받으면 된다.
1-4. format("d")는 요일이 0-6까지로 표현된다. (일요일이 0으로 시작함)
2. 이번달의 마지막 날짜
2-1.마찬가지로 이번달의 마지막은 dayjs().endOf("month")를 사용해 Object를 리턴받는다.
2-2 .dayjs().endOf("month").format("D")를 이용해 필요한 포맷으로 리턴받는다.
2-3. format("D")는 날짜를 리턴한다 (해당 월의 1-31까지의 날짜)
3. 그 후 해당하는 달이 시작하는 요일 (1번에서 받음)에서부터 1일이 시작되면 된다.
4. 그리고 해당월의 마지막날짜 (2번에서 받음)를 입력해 증가시켜 출력해주면된다.
이렇게 현재 달의 날짜를 받아 올수 있다.
const getDays = () => {
// monthStart : 현재 달의 시작요일 (0:일요일 )
// monthEnd : 현재달의 마지막일
const monthStart = current.startOf("month").format("d");
const monthEnd = current.endOf("month").format("D");
let days = Array.from(
new Array(Number(monthEnd)),
(item, index) => index + 1
);
return (
<Date>
{days.map((item, index) => (
<div key={index}>{item}</div>
))}
</Date>
);
};
이제 우리는 이 days를 month안에서 렌더링 시켜주면 되는데
이때 여기서 필요한것은 !
5. 몇번째 주에서 해당 월이 시작하는지
6. 몇번째 주에서 해당 월이 끝나는지
를 알아내야한답
내일 계속 써야지~~~ 키득키득
하다보니까 day만 비교해서 모든 달의 현재일자가 같은 오류가 생겨버렸기 때문에^^ㅋ
쉬워보였는데 하다보니까 생각할게 많네
내일 커피마시고 해야지!
'Frontend > React' 카테고리의 다른 글
React + dayjs()로 달력만들기 3탄.. 2탄과 거의 비슷함 (0) | 2023.01.23 |
---|---|
React + day.js로 달력만들기 2.. 괜찮은 방법일까? (0) | 2023.01.22 |
forwardRef 사용법 (0) | 2022.05.26 |
forwardRef 를 알아보자 (0) | 2022.05.24 |
React + styledComponent + radioButton / not updating (0) | 2022.04.19 |