Project/나혼자 미슐랭
나혼자 미슐랭 개발일지 #4 – 리뷰 작성과 리스트 페이지 완성(무한스크롤 & 필터)
Coding Kitsune
2025. 5. 15. 22:03
범위: 리뷰 작성 기능 구현, 무한 스크롤 적용, 정렬/필터 기능 추가, UI/UX 개선
1. 리뷰 작성 페이지(ReviewAddPage) 개발
✅ 기능 요약
- 음식점 검색 → 선택 → 별점 선택 → 코멘트 작성 → 저장 흐름
- 음식점은 2글자 이상 입력 시 실시간 검색
- 별점은 3개 항목(맛, 분위기, 서비스)으로 쪼개서 받고, 평균값만 저장
- 필수값 누락 시 알림 및 유효성 검사 처리
- 등록 성공 시 자동으로 리스트 페이지 이동
✅ 주요 구현 사항
- StarRating 컴포넌트를 재사용 가능하게 분리
- 별점 입력은 마우스로 클릭해 0.5점 단위 조절 가능
- 선택된 음식점 카드 미리보기 + 썸네일 이미지 함께 표시
- 프론트에서는 평균 평점만 백엔드로 전송
✅ 관련 기술
- axios POST 요청으로 /api/reviews에 전송
- 사용자 ID는 현재 하드코딩된 상태지만 추후 로그인 연동 예정 (현재는 userId =5 를 test 계정으로 이용중)
2. 리스트 페이지 무한 스크롤 구현
- 기존 “더보기” 버튼 → IntersectionObserver 기반 무한 스크롤 전환
- 하단 ref에 스크롤 도달 시 page + 1로 자동 데이터 로딩
- 중복 렌더링 방지 처리 (.some()으로 필터링)
- 추가 로딩 중일 땐 로딩 애니메이션 or 스피너도 적용 고려 중
3. 리뷰 정렬 및 필터 기능
적용된 필터 목록
- 최신순 (orderBy=created)
- 평점순 (orderBy=rating)
- 평점 4.0 이상 (minRating=4.0)
- 한식 / 일식 등 카테고리 필터 (다음 목표)
구현 방식
- 프론트에서 필터 버튼 클릭 시 page=0으로 초기화 후 조건 state 업데이트
- orderBy, minRating 파라미터를 서버에 전달
- 백엔드에서는 JPA 정렬 쿼리를 동적으로 구성
- 무한스크롤과 필터 기능이 동시에 작동하도록 연동
4. UI 개선
- 리스트 카드 높이 고정 (한 줄/두 줄 텍스트에도 동일한 높이 유지)
- “추가하기” 버튼 위치를 상단 우측으로 변경하여 항상 접근 가능하게 수정
- 필터 버튼 UI 개선 (한 줄에 모두 배치, 선택 시 강조)
- 리뷰 썸네일은 음식점 정보에 포함된 imageUrl 사용
Git 커밋 관리 및 협업
- 기능 단위로 커밋 (예: feat: 리뷰 작성 API 연동, feat: 무한스크롤 적용)
다음 할 일
- 로그인/회원가입 → JWT 인증 연동
- 리뷰 수정, 삭제 기능 추가
- 음식점 상세 페이지 및 지도 연동
- 유저별 맛집 통계 기능