---
# System prepended metadata

title: 20220119 Frontend 일일 개발일지
tags: ['20220119']

---

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를 설정했다.