티스토리 뷰
이번엔 Saving(적금)을 해보자.
Deposit(예금)과 동일하다고 생각할 수 있으나, 디테일 페이지에서 자유적립식과 정액적립식을 구분해놨기 때문에, 예금처럼 상품명 만으로는 해당 상품을 찾기 어렵다. 필요다면 Option의 데이터 정보에 자유적립인지 정액적립인지 구분하여 조건문을 통해 filter하거나 새로운 배열을 할당하면 된다. 하지만 도표는 양쪽 다 출력할 예정이기 때문에 결국 Detail을 dialog할 때는 같은 정보를 보여줄 예정이다. 즉! 적금과 똑같이 사용할 것이다. (실제 Detail 데이터는 도표기준으로 구분하지 않았다, List만 구분됨)
그리고 추가로 어제는 예상치 못했는데, dialog는 view(최상위 컴포넌트)에 변수가 존재하는데, 하위 컴포넌트에 OK 버튼이 존재하는 문제로 버튼이 작동하지 않는 경우가 발생했다. 이 또한 수정해줘야한다.
생각한 방법으로는 두가지가 있는데,
1. 하위 컴포넌트의 이벤트를 상위 컴포넌트 변수로 전달하는 방법 (emit)
2. v-dialog까지 하위 컴포넌트로 내린 후, 상위 컴포넌트의 함수에 따른 dialog 변수를 하위로 전달하는 방법 (props)
먼저 1번 방법을 시행해볼까?
Emit (하위 => 상위)
비슷한 방식으로는 close-dialog 자체가 이벤트이기 때문에 상위 컴포넌트에서 함수를 정의한다면 Event 발생 함수로 처리해서 dialog의 변수를 변경해도 된다. 하지만 복잡한 이벤트가 아니라면 하려면 위처럼 사용할 수 있다. 결론적으로 emit을 사용하는 것이 익숙하다면 별로 어려운 점은 없어보인다.
Props (상위 => 하위)
props를 통해 받은 데이터는 읽기 전용 데이터라는 것을 확인할 수 있다. 물론 해결할 수 없는 것은 아니다. 1번처럼 emit을 통해 상위로 dialog 변수를 변경해주면 되니까. 하지만 이럴거면 2번안쓰지!!
결국 일단 1번을 채택했다. 2번이 더 재사용하기 좋은 Component가 될 것 같으나 배보다 배꼽인 것 같으니 좋은 경험이었다고 생각하고 일단 패스! 갈길이 멀다.
이렇게 DepositDetailComponent와 SavingDetailComponent가 생성되었다. 모든 페이지에 적용 시켜볼까?
MapView
문제는 앞서 만들어놓은 Component에서는 store에 저장된 데이터를 가져오지만 해당 페이지에선 은행 검색(keyword)를 통해 리스트업을 한 후에 해당 상품 클릭시 result에 저장된 데이터를 전개해버렸다. 역시 구현에만 급급하면 이렇게 꼬이는 경우가 생기는구나 싶다.
또 분기점이 생겼다.
1. 새로운 Map 전용 Component를 만든다
2. 이미 만들어 놓은 DetailComponent의 형태를 변형한다
사실 1번은 어렵지 않다. 이미 동일한 작업을 했으니까. 2번을 좀 더 고민해보기로 했다.
클릭 이벤트가 발생되었을때, 내부에서 데이터를 띄우는 것이아니라 store로 연결해주면 되지 않을까? 이렇게 재사용하기 위해 리팩토링을 진행하니까 말이다.
284줄 = > 137줄로 확실하게 다이어트 하게되었다.
하지만 큰 문제가 발생했는데? To be continue...
'일상코딩' 카테고리의 다른 글
HoneyMoney Refactoring (버그 fix, 컴포넌트 최종 정리) (1) | 2024.06.08 |
---|---|
HoneyMoney Refactoring (ProfilePage) (0) | 2024.06.07 |
HoneyMoney Refactoring (error & bug fix) (3) (2) | 2024.06.06 |
HoneyMoney Refactoring (+Component 재사용) (3) | 2024.06.04 |
- Total
- Today
- Yesterday
- Authentication System
- 카운팅정렬
- CodeTree
- 순열
- Method
- Database
- ChatGPT
- JavaScript
- views.py
- SQLite
- basic syntax
- refactoring
- Component
- Sequence types
- 재귀
- SQL
- 연산자
- 삼성청년SW아카데미
- dfs
- baby-gin
- 함수
- vue3
- Python
- app
- HTML
- ssafy
- Django
- honeymoney
- vue
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |