TIL # 10 - 코드 돌아보기 & Context API

정승옥(seungok)·2021년 4월 4일
0

TIL

목록 보기
10/16
post-thumbnail

1. 메인 컴포넌트

1-1. 선택한 카테고리 리스트

  • 처음 카테고리 선택을 구현했을 때는 하나의 배열 안에서 관리했다.
  • 직방 카테고리처럼 카테고리별 그룹을 나누어 각각 관리하기 배열을 2개로 나눴다.
  • 전체를 선택했을 때는 해당 그룹에 포함된 모든 카테고리를 배열에 넣어주고 두 카테고리 모두 전체를 선택했을 경우 배열에 담긴 전체 카테고리 2개중 하나를 삭제한다.

1-2. 좌표값 전달

  • 좌표값, 줌 레벨, 사용자 화면 크기를 쿼리에 담아 백엔드에 해당 좌표에 보여줄 데이터들을 요청한다.
  • 선택한 카테고리 리스트도 쿼리에 담아 필터링된 데이터를 받는 작업이 추가적으로 필요할 것 같다.

2. 카카오 지도 API

2-1. 클러스터 생성

  • 클러스터는 MarkerClusterer 생성자함수를 통해 선언할 수 있다
  • addMarkers 메소드를 통해 배열에 담긴 마커들을 클러스터에 담아 지도에 표현할 수 있다.
  • 옵션 중 averageCenter 를 통해 마커들의 좌표 평균값을 클러스터의 좌표로 표현할 수있다.
  • minClusterSize 가 1이면 줌레벨을 최소한으로 낮춰도 클러스터가 유지된다.

2-2. 마커 생성

  • Marker 생성자 함수로 선언된 인스턴스를 좌표값을 담은 배열과 map 메소드를 이용하여 지도에 표시할 위치를 선언할 수 있다.
  • 속성 중 image 를 통해 마커 사용할 이미지를 바꿔줄 수 있는데 이 부분은 클러스터 style 옵션과 함께 활용해 볼 생각이다.

3. 필터 컴포넌트

3-1. 가격 필터

  • 현재 선택한 금액 범위에서 작은 값이 최소금액과 같을 때, 큰 값이 최대금액과 같을 때, 두 값이 각각 최소금액, 최대금액과 같을때 그 외 경우 4가지로 나눠 선택한 범위를 보여준다.

3-2. 카테고리 토글

  • 카테고리 그룹 전체, 각 그룹을 배열의 boolean 값으로 관리하여 이벤트 함수를 통해 전체 그룹을 닫거나 특정 그룹만 닫는 토글 기능을 구현해봤다.

4. Context API

  • 부모에서 자식 컴포넌트로 props 를 이용해 값을 전달하는 경우 외에 자식-자식 끼리의 데이터 전달 또는 자식-부모 컴포넌트로 전달하기 위해서는 부모 컴포넌트에서 함수를 전달하여 데이터를 관리했다.
  • 하지만 부모 컴포넌트에서 선언되는 함수가 많아져 관리하기 어렵고 가독성도 떨어지게 된다.
  • Context API 를 사용하여 state 와 함수들을 전역에서 상태관리를 할 수 있다.
  • Context API 개념을 익히고 추후에 리덕스도 사용해봐야겠다.

4-1. Provider & Consumer

  • Provider 컴포넌트의 propsstate 와 함수들을 전달하고 Consumer 컴포넌트에서 전달받은 props 를 사용할 수 있다.
  • Consumer 컴포넌트 안에 중괄호를 열고 그 안에 함수를 넣어주면 컴포넌트의 children 역할을 할 수 있다.
  • useContext 훅을 통해 Context 값을 조회할 수 있어 간결한 코드를 만들 수 있지만 함수형 컴포넌트에서만 사용할 수 있다.
profile
Front-End Developer 😁

0개의 댓글