현재 찾은 2개 패키지 : react-big-calendar / react-calendar
둘에서 공통적으로 쓰이는 패키지 : moment.js
react-calendar
- 장점
- 년단위로도 넘길 수 있는 표시가 있음
- 단점
- 크기 조절이 불가능함-확인필요
react-big-calendar
- 장점
- 상세 표시가 가능함
- 단점
- 달력 크기를 줄이게 되면 장점1번의 기능이 사라짐
공통적인 문제점
- 달력의 해당 날에 색을 칠하는 조건으로 정했는데 어떻게 색을 칠하게 할지 함수로 짜야함-해결
- 1번과 반대로 되는 상대방에게 보여질 캘린더도 짜야함-해결
- 더 나아가서 반대의 경우 칠한 색이 아닌 칸은 클릭 이벤트를 비활성화 해야 한다
- 1번의 경우 같은 모임의 날이 여러개를 지정한 경우 find나 map으로 배열마다 값을 내보내야함
한 모임에서 여러 날짜에 약속을 잡은 경우 어떻게 해결해야 하는가?
https://jquense.github.io/react-big-calendar/examples/index.html?path=/docs/props–day-prop-getter
https://github.com/jquense/react-big-calendar/issues/1581
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/48de15f5ed1bf35b6936f4336e49b44ebbca22ec/types/react-big-calendar/react-big-calendar-tests.tsx#L243
위 3개의 사이트를 참고하였다.
첫번째 사이트의 함수의 경우 작동하는 식을 이렇게 바꾸어 보았다
const X = useCallback((date)=>({...(moment(date).date()===moment(event[1].day).date()&&{style:{backgroundColor:"darkgreen"},}),}),[])
useCallback 함수를 사용해 만든 모양이다. 정상적으로 작동은 했지만 한 모임에서 날짜를 들고왔을 때 여러개인 경우 어떻게 분배해야 하는지 잘 몰라서 킵했다
두번째 사이트의 함수의 경우 작동하는 식을 바꾸어 보았지만 작동하지 않아서 적지 않는다.
세번째 사이트의 함수의 경우 작동하는 식을 바꾸어 보았다
const X2=(date)=>{for(let i=0;i<event.length;i++){if(date.getMonth()===moment(event[i].day).month())
return{style:{backgroundColor:"Blue"},};}};
식을 뜯어고친 결과 날짜가 여러개여도 작동을 한다. 초기에 실수를 한 것이 for 문 안에 else return {}
이 있었는데 지우지 않아서 맨 처음 값을 제외한 나머지 값들은 다 else로 가서 작동을 마저 하지 않았다