20220119 Frontend 일일 개발일지 === ###### tags: `20220119` # 개발 내용 ## Login 로직 구성 :::warning ==오늘은 Login 로직에서 발생한 오류가 굉장히 심각하여 시간이 오래걸렸다.== ::: ### 장장 4시간의 디버깅 >[color=magenta]==**결론) `Axios.create()`함수 때문에 일어난 버그였다!**== #### 버그 내용 > 로그인 성공시 상단 GNB의 `로그인/로그아웃` 버튼이 안바뀐다 1. 로그인 처리 ![](https://i.imgur.com/6Sa5fNI.png) - 어찌저찌 로그인을 하면, `onHandleLogin` 함수를 호출한다. - 4번째 줄에서 로그인 요청을 하고, - 10번째, 11번째 줄에서 보듯이 Token을 잘 저장하고, - 잘 처리되어 12번째 줄에서 홈으로 이동시킨다. 2. 홈으로 이동 후 유저 validate 절차 ![](https://i.imgur.com/a2g9100.png) - 홈으로 이동하면 21번째줄에서 `getCurrentUser` 함수를 수행. - 3번째 줄으로 넘어가서 `validateUser` 함수로 들어간다. 3. `validateUser` 함수 수행 ![](https://i.imgur.com/ox68FRZ.png) - 2번째줄, token을 검사하고, - 9번째줄에서 `customAxios` 를 통해 `POST`를 날린다. 4. `customAxios` 수행 ![](https://i.imgur.com/GmT22p8.png) > 보면.. 분명히 멀쩡하게 axios 객체를 만들어줄것 같았는데... ==**아니였다.**== -> 아마 객체를 새롭게 항상 만드는게 아닌것 같은 느낌이다. 5. 다시 `validUser` 함수로 돌아와서, ![](https://i.imgur.com/ox68FRZ.png) - 9번째 줄에서 `POST` 요청은 실패로 처리되어, - 18번째 에러 핸들러에 잡힌다. ### 진짜 충격적인 사실) -> 새로고침하면 해결된다. 상단에 로그인/로그아웃 버튼이 잘 변경된다. ### 해결한 방법 >[color=crimson]`customAxios` 제거. ![](https://i.imgur.com/HtwVx0H.png) - 눈물을 머금고 `custonAxios` 를제거하고 정통으로 요청을 날렸더니, - ==**해결**== :::success 왜 안됬는지 더 알아봐야할 것 같다. `customAxios` 를 통해서 추후에 interceptor도 한번 만들어보고 싶었는데, 이렇게 무너지는가. 여튼 이 문제로 4시간을 날렸는데 해결은 해서 다행이다. ::: --- ## 신발 사이즈 버튼 컴포넌트 구성 간단하게 신발 사이즈 고르는 컴포넌트를 작성했다. ![](https://i.imgur.com/m26xAYH.png) - 먼저 `props` 를 보면, ```typescript= type ShoeSizeProps = { category: "buy" | "sell" | "wish"; size: number; active?: boolean; price?: number; onClick?: React.MouseEventHandler<HTMLLIElement>; }; ``` | Props | 사용 목적 | | -------- | -------- | | `category` |buy면 빨간색, sell이면 초록색 글씨가 보이며, wish라면 글씨가 아닌 아이콘이 보인다.| | `size` |신발 사이즈는 모든 컴포넌트에서 동일하게 보이므로 optional 하지 않게 설정했다.| | `active` |active 속성이 있다면 버튼 외곽과 내부를 진하게 표현한다.| | `price` |price 는 `number` 로 들어오기 때문에, 이를 `toLocaleString()` 함수를 거쳐 보기 좋은 가격 형태로 바꾼다.| | `onClick` |상단 컴포넌트에서 `onClick` 함수를 바인딩할때 쓴다.| 위와 같은 이유로 props를 설정했다.