제시된 기획서에 따라 어드민 페이지를 기획.
구체적인 기능들은
state와 props 관리
라고 할 수 있음.가장 최소한의 state를 찾고 나머지는 필요에 따라 계산되도록
.단일 책임 원칙
을 지켜야함.클린 코드를 작성하는 것
또한 협업과 성능을 최적화하는 방법임. 1. import 순서도 경로(or연관)에 따라 묶어주자 ex) 멀리 있는 것 부터 차례대로
2. propType
3. 컴포넌트 정의
4. Styled Component
5. 간단한 상수 설정 (웬만하면 외부로)
6. 해당 컴포넌트에서만 사용할 함수 (2번 이상 사용하면 공통/컴포넌트 utils로)
이번 과제에선 datePicker, dateRangePicker, dateTimePicker 등의 기간을 설정하거나 날짜를 지정하는 컴포넌트를 사용하는 미션들이 여럿 있었다.
이런 상황에서는 항상 react-datepicker 만 사용해봤는데 이번 과제에서 MUI를 처음 사용해봤다.
MUI는 단순히 시간, 달력 컴포넌트를 위한 라이브러리가 아니었고 방대한 양의 UI 컴포넌트를 제공하는 라이브러리였다.
그래서 자료 또한 많아서 커스터마이징하는 작업이 어렵지 않을 줄 알았는데 이번 과제에서 제일 시간이 많이 걸린 부분이 될 줄이야...
처음에는 default 사용법만을 보고 주먹구구식으로 커스터마이징을 하려고 노력했는데 쉽지 않았다.
stackoverflow에도 찾아보고 youtube을 포함한 여러 플랫폼에서 서칭을 해보았지만
내가 원하는 기능을 상세히 다룬 내용은 없어서 props를 일일이 써보면서 찾아보는 과정이 쉽지 않았다.
그러면서 든 생각이
그러니까 커스터마이징이지 !
라는 생각이었고 앞서 언급한 "내가 원하는 기능을 상세히 다룬 내용은 없어서" 라는 말이 너무 당연한 말이었다.
다시 처음부터 시작하자는 생각으로 MUI 공식문서부터 보기 시작했고
역시 이번에도 돌고 돌아 공식문서
라는 말이 틀리질 않는 순간이었다.
공식문서를 보며 나에게 필요한 기능들은 이것, 이것 이니까 props를 이런 식으로 작성해보자
라는 마인드로 공식문서를 보며 커스터마이징한 결과 원하는 dateTimePicker를 만들어볼 수 있었다.
그동안 input 태그
에 대해 공부를 잘 안 해본 것이 잘 들어나는 과제였다고 생각한다.
input 태그 별로 중복 선택 여부와 커스터마이징의 여부를 깊게 공부해보지 못했는데
이번 과제에서 라디오 버튼을 커스터마이징할 때 어려움을 많이 겪었다.
다른 팀원은 빠른 시간안에 버튼을 커스터마이징하여 다른 팀원이 활용할 수 있도록 컴포넌트화까지 진행하였는데
비슷한 기능을 흉내내지도 못하고 어려움을 많이 겪었고 결국은 100% 원하는 모습을 구현해내지 못했다.
이번 기회에 input 태그와 버튼 커스터마이징을 조금 더 공부해봐야겠다고 생각했다.