-
Notifications
You must be signed in to change notification settings - Fork 1
♻️Refactor: 캐러셀 리펙토링 작업 #270
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
Conversation
- 캐러셀 일부 스타일 변경 - 캐러셀 로직 간소화 - 일부 변수 상수화 # 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
📝 Walkthrough""" Walkthrough이번 변경에서는 Carousel 컴포넌트의 반응형 아이템 뷰 계산 방식이 동적 측정에서 고정된 브레이크포인트 기반 방식으로 단순화되었습니다. Carousel 관련 스타일과 상수 파일이 이에 맞게 수정 및 정리되었으며, Card 컴포넌트의 상태바 이미지와 남은 일수 계산 주기가 변경되었습니다. DonationModal에서는 내부 Alert 상태와 컴포넌트가 제거되고 외부 alert controller를 활용하도록 리팩토링되었으며, 입력 필드와 이미지 위치 및 스타일이 조정되었습니다. 불필요한 스타일 코드와 상수 파일이 삭제 및 교체되었습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant DonationModal
participant AlertController
User->>DonationModal: 금액 입력 및 후원 요청
DonationModal->>DonationModal: 입력 검증 및 처리
alt 성공
DonationModal->>AlertController: showAlert("투표에 성공했습니다", "success")
else 실패
DonationModal->>AlertController: showAlert("투표에 실패했습니다.", "error")
end
sequenceDiagram
participant User
participant Carousel
User->>Carousel: 화면 크기 변경(Resize)
Carousel->>Carousel: window.innerWidth로 itemsView 결정 (1~4개)
User->>Carousel: Next/Prev 버튼 클릭
Carousel->>Carousel: currentIndex를 itemsView만큼 증감, 슬라이드 이동
Possibly related PRs
Suggested reviewers
Poem
📜 Recent review detailsConfiguration used: .coderabbit.yaml 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (2)
src/components/carousel/carousel.styles.js (1)
65-75: 내비게이션 버튼 스타일이 개선되었습니다.함수형으로 변경하여 방향에 따라 적절한 위치 스타일을 적용하는 것은 코드 가독성과 유지보수성을 높입니다. backdrop-filter를 사용한 블러 효과와 부드러운 투명도 전환은 시각적 경험을 향상시킵니다.
다만, translateY(-125%)는 컨테이너 크기에 따라 다르게 동작할 수 있으므로, 절대적인 위치 지정(예: top: 50%, transform: translateY(-50%))을 고려해 볼 수 있습니다.
src/components/carousel/Carousel.jsx (1)
12-29: 화면 크기에 따른 아이템 뷰 설정 로직이 개선되었습니다.윈도우 크기 기반의 브레이크포인트 접근 방식으로 변경한 것은 이전의 복잡한 동적 계산보다 단순하고 이해하기 쉽습니다. 리사이즈 이벤트 리스너의 추가 및 정리도 적절하게 처리되었습니다.
다만, 브레이크포인트 값(1200, 1000)이 하드코딩되어 있어서 다른 상수들과 일관성이 떨어집니다. 이 값들도 CAROUSEL 상수에 추가하는 것이 좋을 것 같습니다.
// src/constants/carousel/carousel.js에 추가 const CAROUSEL = { DESKTOP_ITEM_WIDTH: 282, ITEM_GAP: 12, ITEMS_VIEW: 4, + BREAKPOINTS: { + LARGE: 1200, + MEDIUM: 1000, + } };// Carousel.jsx에서 사용 const updateItemsView = () => { - if (window.innerWidth >= 1200) { + if (window.innerWidth >= CAROUSEL.BREAKPOINTS.LARGE) { setItemsView(3); - } else if (window.innerWidth >= 1000) { + } else if (window.innerWidth >= CAROUSEL.BREAKPOINTS.MEDIUM) { setItemsView(2); } else { setItemsView(1); } };
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (10)
src/components/card/Card.jsx(3 hunks)src/components/card/card.styles.js(1 hunks)src/components/carousel/Carousel.jsx(3 hunks)src/components/carousel/carousel.styles.js(3 hunks)src/components/modals/creditChargeModal/index.js(1 hunks)src/components/modals/donationModal/DonationModal.jsx(4 hunks)src/components/modals/donationModal/donationModal.styles.js(2 hunks)src/constants/carousel/carousel.js(1 hunks)src/constants/carousel/carouselConstants.js(0 hunks)src/constants/carousel/index.js(1 hunks)
💤 Files with no reviewable changes (1)
- src/constants/carousel/carouselConstants.js
🧰 Additional context used
🧬 Code Graph Analysis (3)
src/components/card/card.styles.js (1)
src/styles/responsive.js (1)
media(14-14)
src/components/card/Card.jsx (1)
src/utils/format/getDaysRemaining.js (1)
getDaysRemaining(23-36)
src/components/carousel/carousel.styles.js (2)
src/styles/responsive.js (1)
media(14-14)src/components/button/arrowButton/arrowButton.styles.js (2)
navigationButton(11-34)navigationButton(11-34)
🔇 Additional comments (27)
src/components/modals/creditChargeModal/index.js (1)
1-2: 파일 끝에 개행 추가가 적절합니다.많은 코드 에디터와 린터가 파일 끝에 개행을 권장하는데, 이는 버전 관리 시스템에서 파일 비교와 병합을 더 쉽게 해주기 때문입니다. 이 작은 변경은 좋은 코딩 관행을 따르고 있습니다.
src/components/card/card.styles.js (2)
102-106: 수직 정렬 추가로 UI가 개선되었습니다.
align-items: center속성 추가는 상태 바 내 요소들의 수직 정렬을 개선하여 더 세련된 UI를 제공합니다. 이는 새로운 로고 이미지와 함께 더 균형 잡힌 디자인을 만들어 줍니다.
107-115: 반응형 폰트 크기 적용이 잘 되었습니다.고정된 폰트 크기에서 반응형 접근 방식으로 변경한 것은 훌륭합니다. 미디어 쿼리를 사용하여 다양한 화면 크기에 맞게 폰트 크기를 조정함으로써 다양한 기기에서 더 나은 사용자 경험을 제공할 것입니다.
src/components/card/Card.jsx (4)
3-4: 이미지 변경이 적절합니다.기존
credit.png에서logo.png로의 변경은 스타일 개선과 일관성을 위한 좋은 선택입니다. 이미지 변경은card.styles.js의 스타일 업데이트와 잘 맞습니다.
12-20: useEffect 의존성 배열 변경에 대한 검토가 필요합니다.의존성 배열이
[data.deadline]에서[]로 변경되었습니다. 이로 인해data.deadline이 변경되어도 interval이 재설정되지 않을 수 있습니다. 이는 의도적인 변경일 수 있지만, 다음 사항을 고려해보세요:
deadline이 변경되면 interval을 재설정하지 않아도 되는지 확인getDaysRemaining함수가 항상 최신data.deadline값에 접근할 수 있는지 확인리렌더링을 최적화하기 위한 변경이라면 적절한 주석을 추가하는 것이 좋습니다.
16-17: 인터벌 시간 증가가 적절합니다.인터벌 시간을 60000ms(1분)로 설정한 것은 합리적입니다. 남은 일 수 계산은 초 단위로 자주 업데이트할 필요가 없으므로 이 변경은 성능을 향상시킬 수 있습니다.
54-55: 이미지 소스 변경이 적절합니다.
starImg를 사용하는 이미지 소스 변경은 가져오기 변경과 일치하며 UI 일관성을 개선합니다.src/components/modals/donationModal/donationModal.styles.js (3)
78-79: 입력 필드 패딩 변경이 적절합니다.패딩을
1.6rem 4rem 1.6rem 1.6rem에서1.6rem 1.6rem 1.6rem 6rem으로 변경한 것은 이미지가 오른쪽에서 왼쪽으로 이동했기 때문에 적절합니다. 왼쪽 패딩이 증가하여 텍스트와 이미지 간의 충돌을 방지합니다.
102-104: 이미지 위치 변경이 UI 배치를 개선합니다.이미지를 입력 필드의 오른쪽에서 왼쪽으로 이동한 것은 일반적인 입력 필드 디자인 패턴과 더 잘 일치합니다. 이는 사용자가 입력 필드의 용도를 빠르게 인식하는 데 도움이 됩니다.
105-107: 이미지 크기 조정이 적절합니다.이미지 크기를 3.6rem에서 3rem으로 줄인 것은 입력 필드 내에서 더 균형 잡힌 모습을 제공합니다. 이로써 이미지가 입력 필드에서 너무 크게 보이지 않도록 하여 UI 일관성을 유지합니다.
src/components/modals/donationModal/DonationModal.jsx (5)
4-4: 불러오기(import) 개선 및 일관성 향상경고 시스템을 중앙 집중화하여 코드 유지보수성을 향상시키고, 이미지 에셋을 일관되게 사용하는 변경이 좋습니다.
Also applies to: 7-7
42-42: 입력 제한 개선숫자 입력 필드에서 소수점과 공백 문자를 모두 방지하도록 핸들러가 개선되었습니다. 사용자가 의도하지 않은 입력을 방지할 수 있어 좋은 접근입니다.
58-58: 알림 메시지 변경 및 중앙화기존의 로컬 알림 상태 관리 대신 중앙화된
showAlert함수를 사용하여 코드가 간결해졌습니다. 메시지도 "투표"라는 용어를 사용하여 사용자에게 더 친숙하게 변경되었습니다.하지만 메시지 일관성에 대해 확인이 필요합니다. 컴포넌트는 "후원하기"라는 제목을 사용하는데 알림 메시지는 "투표"라는 용어를 사용하고 있습니다.
사용자에게 표시되는 용어가 일관되게 유지되는지 확인해 주세요. "후원"과 "투표"가 같은 개념을 의미하는지, 아니면 의도적으로 다른 용어를 사용하는 것인지 검토가 필요합니다.
Also applies to: 64-64
84-84: 이미지 자산 변경크레딧 이미지가 스타 로고로 변경되었습니다. 이는 카드 컴포넌트와의 시각적 일관성을 향상시킨다는 점에서 좋은 변경입니다.
86-86: 입력 필드 타입 명시적 지정입력 필드에 type="text"를 명시적으로 지정하여 코드 가독성이 향상되었습니다. 이는 좋은 관행입니다.
src/constants/carousel/index.js (1)
1-1: 모듈 내보내기가 업데이트되었습니다.기존의
CAROUSEL_CONSTANTS대신 새로운CAROUSEL모듈을 내보내는 방식으로 변경하여 전체 리팩토링 방향성에 맞게 업데이트되었습니다.src/constants/carousel/carousel.js (1)
1-7: 캐러셀 상수가 간결하게 정의되었습니다.캐러셀 관련 상수 값들이 명확하게 구조화되어 있습니다. 이 접근 방식은 이전의 복잡한 설정보다 훨씬 이해하기 쉽고 유지보수하기 좋습니다.
다만,
ITEMS_VIEW값이 4로 설정되어 있지만 실제 컴포넌트에서는 3, 2, 1로 동적으로 변경되는 부분이 일관성 측면에서 확인이 필요합니다. 상수의 목적이 초기값인지 최대값인지 명확히 하면 더 좋을 것 같습니다.src/components/carousel/carousel.styles.js (4)
8-10: 반응형 여백 설정이 개선되었습니다.media 쿼리를 사용하여 각 화면 크기별로 적절한 여백을 설정한 부분이 좋습니다. 사용자 경험을 일관성 있게 유지하면서도 화면 크기에 따라 최적화된 UI를 제공합니다.
24-26: 뷰포트 영역 스타일이 단순화되었습니다.이전의 복잡한 플렉스 컨테이너 설정에서 단순한 relative 포지셔닝으로 변경된 것은 전체 레이아웃 구조의 단순화에 기여합니다. 이는 절대 위치 지정 방식의 내비게이션 버튼 설정과 함께 잘 작동할 것입니다.
39-53: 캐러셀 트랙의 동적 스타일 적용 방식이 개선되었습니다.함수형 스타일 컴포넌트로 변경하여 슬라이드 오프셋을 파라미터로 받는 방식은 매우 좋은 접근법입니다. 인라인 CSS 변수를 사용하는 것보다 React의 패턴에 더 적합합니다. 또한 다양한 화면 크기에 따라 트랜지션 시간을 세분화한 것은 사용자 경험 향상에 도움이 됩니다.
77-85: 빈 상태 메시지 스타일이 추가되었습니다.콘텐츠가 없을 때 표시될 메시지의 스타일이 적절하게 정의되어 있습니다. 중앙 정렬과 여백 설정이 UI의 일관성을 유지하는 데 도움이 됩니다.
src/components/carousel/Carousel.jsx (6)
1-5: 불필요한 의존성이 제거되고 새로운 상수가 추가되었습니다.useRef가 더 이상 사용되지 않아 제거되었고, 새로운 CAROUSEL 상수를 가져오는 것으로 변경되었습니다. 이는 코드 정리와 모듈화 측면에서 긍정적인 변화입니다.
31-40: 네비게이션 함수가 개선되었습니다.handleNext와 handlePrev 함수가 고정된 값 대신 itemsView에 따라 증감하도록 변경되어 다양한 화면 크기에서 효율적인 탐색이 가능해졌습니다. 경계 조건 검사도 적절히 수행되고 있습니다.
42-44: 슬라이드 오프셋 계산 방식이 단순화되었습니다.복잡한 계산 함수 대신 상수를 사용하여 오프셋을 계산하는 방식으로 단순화되었습니다. 이는 코드의 가독성과 유지보수성을 향상시킵니다.
54-59: 스타일 적용 방식이 일관되고 개선되었습니다.네비게이션 버튼과 캐러셀 트랙에 함수형 스타일을 적용하는 것으로 변경되어, 동적인 스타일 적용이 보다 명확해졌습니다. 이는 코드의 가독성과 유지보수성을 크게 향상시킵니다.
70-71: 빈 상태 메시지가 개선되었습니다.새로운 스타일을 적용한 빈 상태 메시지 텍스트로 변경되어 사용자에게 더 명확한 정보를 제공합니다.
77-78: 네비게이션 버튼 비활성화 및 스타일 적용 로직이 개선되었습니다.itemsView를 고려한 비활성화 조건과 방향에 따른 스타일 적용으로 네비게이션 경험이 향상되었습니다. 특히 오른쪽 버튼의 비활성화 조건 변경은 논리적으로 더 정확합니다.
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
- 컴포넌트 로직 일부 수정 - 스타일 일부 수정 - 상수 수정 # 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (1)
src/components/carousel/Carousel.jsx (1)
9-9: 초기 itemsView 값이 CAROUSEL.ITEMS_VIEW로 설정되었습니다.CAROUSEL.ITEMS_VIEW 값이 1로 설정되어 있어 작은 화면 크기에 맞게 초기화됩니다. 이전 리뷰에서 논의된 내용에 따르면, 이는 적절한 초기값 설정입니다.
🧹 Nitpick comments (2)
src/components/carousel/Carousel.jsx (2)
56-56: 네비게이션 버튼 스타일 적용 방식이.개선되었습니다.navigationButton 스타일 함수에 방향 정보를 전달하는 방식으로 변경되었습니다. false는 왼쪽 버튼을 의미하는 것으로 보입니다.
boolean 대신 'left', 'right'와 같은 명시적인 문자열을 사용하면 코드 가독성이 더 좋아질 수 있습니다:
- styles={S.navigationButton(false)} + styles={S.navigationButton('left')}
79-80: 다음 버튼의 비활성화 조건과 스타일이 업데이트되었습니다.현재 인덱스에 보여지는 아이템 수를 더한 값이 전체 아이템 길이 이상일 때 다음 버튼이 비활성화되는 조건이 적절합니다. navigationButton 함수에 true를 전달하여 오른쪽 버튼임을 표시하고 있습니다.
앞서 언급한 것처럼, boolean 대신 'right'와 같은 명시적인 문자열을 사용하면 코드 가독성이 더 좋아질 수 있습니다:
- styles={S.navigationButton(true)} + styles={S.navigationButton('right')}
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
src/components/carousel/Carousel.jsx(3 hunks)src/components/carousel/carousel.styles.js(1 hunks)src/constants/carousel/carousel.js(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
- src/constants/carousel/carousel.js
- src/components/carousel/carousel.styles.js
🧰 Additional context used
🧬 Code Graph Analysis (1)
src/components/carousel/Carousel.jsx (1)
src/constants/carousel/carousel.js (1)
CAROUSEL(1-5)
🔇 Additional comments (7)
src/components/carousel/Carousel.jsx (7)
1-4: import 문이 간결하게 정리되었네요.React hooks와 CAROUSEL 상수를 직접 가져오는 방식으로 변경하여 코드가 더 명확해졌습니다. 이전 코드에서 사용하던 직접적인 DOM 참조 대신 상수 기반 접근 방식으로 전환한 것이 좋은 선택입니다.
13-31: 반응형 동작이 브레이크포인트 기반으로 개선되었습니다.화면 너비에 따라 보여줄 아이템 수를 조정하는 로직이 잘 구현되었습니다. 이전에 논의된 대로 화면 크기별로 적절히 아이템 개수가 설정됩니다:
- 1920px 이상: 4개
- 1200px 이상 1920px 미만: 3개
- 1000px 이상 1200px 미만: 2개
- 1000px 미만: 1개
resize 이벤트 리스너도 적절히 추가/제거되어 메모리 누수를 방지합니다.
34-38: handleNext 함수의 로직이 개선되었습니다.현재 인덱스에 itemsView를 더해 다음 인덱스를 계산하고, 아이템 길이를 초과하지 않도록 체크하는 로직이 적절합니다. 이로써 보여지는 아이템 수에 따라 정확하게 다음 세트로 이동할 수 있습니다.
41-41: handlePrev 함수가 간결해졌습니다.한 줄로 정리된 handlePrev 함수는 이전 인덱스에서 itemsView만큼 뺀 값과 0 중 더 큰 값을 선택하여 인덱스가 음수가 되지 않도록 보장합니다. 깔끔한 구현입니다.
45-45: 슬라이드 오프셋 계산이 상수를 활용하도록 개선되었습니다.하드코딩된 값 대신 CAROUSEL 상수를 사용하여 슬라이드 오프셋을 계산하는 방식으로 변경되었습니다. 이는 코드 가독성과 유지보수성을 높이는 좋은 접근입니다.
58-59: 캐러셀 컨테이너 및 트랙 스타일링이 함수형으로 개선되었습니다.carouselTrack에 슬라이드 오프셋을 직접 전달하는 방식으로 변경되어 동적 스타일링이 더 깔끔하게 처리됩니다. 이 접근 방식은 styled-components의 장점을 잘 활용하고 있습니다.
72-72: 빈 상태 메시지의 스타일이 개선되었습니다.이전에는 인라인 스타일을 사용했을 것으로 추정되는데, 이제 notthingTitle이라는 전용 CSS 클래스를 사용하여 스타일을 적용합니다. 이는 스타일 일관성과 관리를 위한 좋은 개선입니다.
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
HarrySeop
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨어요! 코드레빗이 얘기한 부분 적용 됐으면 머지해주셔도 좋을 것 같습니다!
그리고 지금 코드레빗이랑 대화하신 부분 사용 예시로 사용해도 괜찮을까요? 이건 이따가 오시면 다시 얘기 하겠습니다
# 커밋 메시지 형식 # <이모지><타입>: <제목> (#이슈 번호) # # ⛔ 제목은 100자 이내, 끝에 마침표(.) 사용 금지 # ⛔ 이모지와 타입 사이에 공백 없이 붙여 씁니다 (예: ✨Feat) # ⛔ 제목과 콜론(:) 사이에 공백 없이 붙이고, 콜론 뒤에는 공백 1칸 필요 # ✅ 제목은 커밋의 "무엇"을 나타냅니다 # ✅ 본문은 "왜", "어떻게"를 요약하며, 선택사항입니다 # ✅ 본문은 여러 줄의 메시지를 작성할 땐 "-"로 구분 # 예시: # ✨Feat: 마이페이지 수정 기능 추가 (#15) # 커밋 타입 가이드: # ✨ Feat : 새로운 기능 추가 # 🐛 Fix : 버그 수정 # 📦 Chore : 설정/빌드 수정, 기타 잡일 # 💄 Style : 포맷팅, 세미콜론 등 비즈니스 로직 없는 변경 # 📝 Docs : 문서 작성 및 수정 # ♻️ Refactor : 리팩토링 (동작 변경 없이 코드 개선)
🧩 관련 이슈 번호
✨ 요약
📌 주요 변경 사항
✅ 체크리스트
📷 UI 변경 사항 (선택)
❓무슨 문제가 발생했나요 ?
💬 논의 사항
💬 기타 참고 사항
Summary by CodeRabbit
버그 수정
스타일
신규 기능
리팩터
기타