스케줄 관리 프로그램: Trello
- 프로젝트 일정 관리
소통 프로그램: Slack
상품상세정보의 내용 중, 제품에 대한 이미지를 무한 슬라이드로 보여주는 기능이 있다.
서버에서 받는 이미지 갯수에 맞춰 무한 슬라이드 기능을 구현해야 했는데, 이번에는 라이브러리가 아닌, 직접 코드로 구현해 보고 싶었다.
- CDM을 활용한, 요소 복사
React LifeCycle의 ComponentDidMount 를 활용하였다. 한번만 실행된다는 특징을 이용하여, 렌더시에 첫번째 이미지와 마지막 이미지를 복사하고 첫번째 이미지를 가장 뒤에, 마지막 이미지를 가장 앞에 붙여준다.
예를 들어 이미지가 5개 넘어온다고 하면, [1,2,3,4,5] 의 형태로 오게 되는데, ComponentDidMount에서 [5,1,2,3,4,5,1] 의 배열로 만들어지게 된다.
- 다음 버튼 기능
이전 / 다음 버튼의 기능은 똑같은 로직으로 구현되었기 때문에, 다음 버튼을 대표로 설명하려고 한다.
카드의 마지막요소가 온 상태에서 다음 버튼을 누르게 되면, 첫번째 이미지로 이동 시킨다.
이때, transitionDuration을 "0.0s"로 설정하여, 첫번째 이미지로 이동되는 시간이 0초가 걸리게 된다. 배열을 예로 들자면, [5,1,2,3,4,5,1]에서 마지막 5가 된 이후에 처음의 1로 돌아가게 된다. 이때 복사된 이미지(5 와 1) 를 UI에서 살짝 보여주기 때문에 사용자는 무한슬라이드 이벤트를 경험할 수 있게 된다.
- Data 가공 및 조건에 맞는 컴포넌트 보이기
text 속성으로 data를 받아, 자식컴포넌트에 전달해준다.
먼저 사이트 상세페이지의 레이아웃이 고르지 않아서, 설명 text의 string을 기준으로 레이아웃의 규칙을 찾기 시작했다.
Array.includes() 메서드를 통해 (,)나 특정 글자가 포함 되어있는지 파악한 다음 컴포넌트가 나타나거나 사라지도록 구현했다.
React Hooks, Styled Components, Redux를 적용하면서, 이전 프로젝트에서 가졌던 불편함을 해결하였다. 개발에 대하여 어느정도 자신감이 많이 생겼기 때문에, 이제는 결과물을 만들어 낸다는 목표만이 아닌 '좀 더 효율적으로 개발 할 수 있지 않을까?' 라는 고민을 하기 시작한 것 같다.
특별히 가장 기억남는 기능은 "장바구니" 인데, 사이트의 어떤 곳에서도 장바구니를 열어 내가 지금까지 넣은 상품을 확인할 수 있어야 했다. 상품 수량 수정과, 삭제 두가지 기능이 어디에서도 되면서 확인이 가능해야 했다. 그리고 장바구니 수정을 위해 자식에서 부모의 state 값을 변경 시켜주어야 하는데, 이런 상황에서는 코드의 구조가 많이 복잡해 질 수 밖에 없었다.
문제를 해결하기 위해, Redux를 도입하였고 전역 상태값 관리를 하여, 위의 문제를 해결 할 수 있었다.