Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/#313: 건물 정보 UI 구현 #314

Merged
merged 30 commits into from
Feb 2, 2024
Merged

Feat/#313: 건물 정보 UI 구현 #314

merged 30 commits into from
Feb 2, 2024

Conversation

hwinkr
Copy link
Collaborator

@hwinkr hwinkr commented Jan 27, 2024

🤠 개요

💫 설명

  • 건물 정보를 보여주는 UI를 구현했어요
  • 드래그 가능하도록 구현했고, 애니메이션과 자동으로 컴포넌트 높이를 조절해주는 기능은 다음 이슈에서 구현하려고 해요
  • 건물 정보 api 요청, 드래그 로직 모두 커스텀 훅으로 구현해서 책임을 분리할 수 있도록 했어요

ToggleInfo

FAQ, 건물 정보 컴포넌트에서 모두 정보를 보여줄 때 토글 기능이 있어요. 재활용할 수 있는 컴포넌트로 만들기 위해서 render props를 사용해서 ToggleInfo 컴포넌트를 구현했어요. 현재 해당 컴포넌트는 건물 정보 컴포넌트에서 활용하고 있고 다음 이슈에서 FAQ 페이지에서 사용하는 컴포넌트에도 적용할 예정이에요

📷 스크린샷 (Optional)

Screenshot 2024-01-27 at 19 17 23 Screenshot 2024-01-27 at 19 17 11

- 스타일을 외부에서 주입할 수 있도록 JSX.Element를 반환하는 함수를 props로 전달하도록 구현(render props)
- FAQ 페이지에서도 해당 컴포넌트를 사용하도록 변경할 예정
- 건물 정보를 보여주는 컴포넌트가 마운트 되면, box-shadow가 사라지는 문제를 해결하기 위해서 z-index를 변경
- 기존에는 오버레이 onClick 이벤트 발생 시 길찾기를 확인하는 모달을 렌더링 했어야 했는데, 책임이 변경되면서 모달 로직이 필요 없어져 해당 로직을 전부 삭제
- 건물 정보 컴포넌트가 렌더링 될 경우 setUserLocation 함수를 호출해서 지도 페이지 전체가 리렌더링되는 문제가 발생했고, 이를 해결하기 위해서 early return 패턴을 적용
- 해당 컴포넌트의 높이를 참조하기 위해서 useRef 훅을 사용
- useRef 훅을 전달할 수 있도록 React.forwardRef 사용
- 컴포넌트를 드래그해서 높이를 조절할 수 있도록 top, height 조절
- 컴포넌트 영역 밖을 클릭하는 경우 해당 컴포넌트를 언마운트 하도록 구현
- document에 클릭 또는 터치 이벤트를 추가해서 지도 위 오버레이(span)을 클릭할 경우 해당 건물 정보를 렌더링하는 컴포넌트를 반환하도록 구현
- 지하, 지상, 옥탑으로 구분짓고 해당 정보를 렌더링 하도록 구현
- 건물 이름, 사진, 길찾기, 건물 정보를 렌더링
- 현재 건물 정보 컴포넌트의 높이가 변할 때마다 BuildingInfo 컴포넌트가 리렌더링 되어, 자식 컴포넌트인 InfoContent 또한 리렌더링 되는데 이를 방지하기 위해서 memo 사용
- 건물 검색 결과, 건물 정보 확인, 길찾기 url, 층별 정보 문자열
- 위치 정보를 허용하는지, 사용자가 학교 내부에 있는지 확인하는 함수 구현
Copy link
Member

@pp449 pp449 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ 변경된 사항이 많아서 읽느라 힘들었네요.. ㅋㅋㅋㅋ

코드 읽으면서 forwardRef를 처음 봤는데 좋네요!

@hwinkr hwinkr merged commit 97ba73b into dev Feb 2, 2024
1 check passed
@hwinkr hwinkr deleted the feat/#313 branch February 2, 2024 00:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Feat: 건물 정보 UI 구현
2 participants