-
Notifications
You must be signed in to change notification settings - Fork 4
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
Feature/#096 탭 브라우징 틀 구현 #101
The head ref may contain hidden characters: "Feature/#096_\uD0ED_\uBE0C\uB77C\uC6B0\uC9D5_\uD2C0_\uAD6C\uD604"
Conversation
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.
코드 확인했습니다! 커스텀훅 네이밍 관련해서 서윤님 네이밍이 더 맞는 방법인것 같아서 해당 부분 제 코드에도 반영하겠습니다!
<AnimatePresence> | ||
<motion.div | ||
ref={pageRef} | ||
className={pageContainer} | ||
initial={pageAnimation.initial} | ||
animate={pageAnimation.animate({ | ||
x: position.x, | ||
y: position.y, | ||
isActive, | ||
})} | ||
style={{ | ||
width: `${size.width}px`, | ||
height: `${size.height}px`, | ||
zIndex, | ||
}} | ||
onPointerDown={() => handlePageSelect(id)} | ||
> |
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.
AnimationPresence부분을 별도의 파일로 분리하고 내부 컴포넌트들을 children으로 관리하는 방법도 생각했었는데, 생각해보니 이 애니메이션 컴포넌트는 페이지 컴포넌트에서만 사용되는 애니메이션이라 재사용성 관련해서 큰 이득이 없을 수도 있을거 같네요. 애니메이션 로직과 비즈니스 로직을 분리한다는 관점에서는 괜찮을 수도 있을거 같은데 딱히 하나의 파일로 관리해도 문제는 없을거 같아서 이부분은 어떻게 생각하시나요?
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.
저는 개인적으로 지금방식처럼 애니메이션 코드만 딱 분리하는게 좋아보입니당!
말씀하신것처럼 비즈니스로직을 분리한다는 점은 좋지만, 직접 짜보니 애니메이션 컴포넌트가 재활용되지 않는다면, 오히려 코드의 양이 2배가 되더라구요! 이부분은 멘토님께도 여쭤봅시당~~
const INIT_ICON = "📄"; | ||
const PAGE_OFFSET = 60; | ||
|
||
export const usePagesManage = (): usePagesManageProps => { |
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.
커스텀훅 네이밍을 ~Manage로 하셨는데 저는 ~Manager로 작성을 했습니다. 일반적으로 동사형을 많이 사용하는거 같아서 제가 작성한 커스텀훅도 동사형으로 변경하겠습니다!
<AnimatePresence> | ||
<nav className={navWrapper}> | ||
{pages?.map((item) => ( | ||
<motion.div | ||
key={item.id} | ||
initial={animation.initial} | ||
animate={animation.animate} | ||
transition={animation.transition} | ||
> | ||
<PageItem {...item} onClick={() => handlePageSelect(item.id, true)} /> | ||
</motion.div> | ||
))} | ||
</nav> | ||
</AnimatePresence> |
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.
페이지를 새로 만들때 애니메이션을 적용하셨네요!
나중에 노션처럼 사이드바를 토글하는 기능을 넣고 애니메이션을 적용하는 것도 생각해보면 좋을 것 같습니다!
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.
후후 이 코멘트보고 바로 구현하러갔습니다! 나중에 해당 PR도 리뷰 부탁드립니다!
…into Feature/#096_탭_브라우징_틀_구현
@@ -12,6 +12,7 @@ | |||
}, | |||
"dependencies": { | |||
"@pandabox/panda-plugins": "^0.0.8", | |||
"framer-motion": "^11.11.11", |
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.
헉 11.11.11... 의미있는 숫자군요
<AnimatePresence> | ||
<nav className={navWrapper}> | ||
{pages?.map((item) => ( | ||
<motion.div | ||
key={item.id} | ||
initial={animation.initial} | ||
animate={animation.animate} | ||
transition={animation.transition} | ||
> | ||
<PageItem {...item} onClick={() => handlePageSelect(item.id, true)} /> | ||
</motion.div> | ||
))} | ||
</nav> | ||
</AnimatePresence> |
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.
후후 이 코멘트보고 바로 구현하러갔습니다! 나중에 해당 PR도 리뷰 부탁드립니다!
<AnimatePresence> | ||
<motion.div | ||
ref={pageRef} | ||
className={pageContainer} | ||
initial={pageAnimation.initial} | ||
animate={pageAnimation.animate({ | ||
x: position.x, | ||
y: position.y, | ||
isActive, | ||
})} | ||
style={{ | ||
width: `${size.width}px`, | ||
height: `${size.height}px`, | ||
zIndex, | ||
}} | ||
onPointerDown={() => handlePageSelect(id)} | ||
> |
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.
저는 개인적으로 지금방식처럼 애니메이션 코드만 딱 분리하는게 좋아보입니당!
말씀하신것처럼 비즈니스로직을 분리한다는 점은 좋지만, 직접 짜보니 애니메이션 컴포넌트가 재활용되지 않는다면, 오히려 코드의 양이 2배가 되더라구요! 이부분은 멘토님께도 여쭤봅시당~~
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.
정말 고생 많으셨습니다!
SHADOW: "#004585", | ||
RED: "#F24150", | ||
YELLOW: "#FEA642", | ||
GREEN: "#1BBF44", |
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.
👌
}); | ||
|
||
export const content = css({ | ||
position: "relative", | ||
width: "100%", | ||
padding: "md", |
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.
따로 자주 사용하는 px 단위를 정의하셨군요! 확인했습니다.
lg: { value: "24px" }, | ||
sm: { value: `${SPACING.SMALL}px` }, | ||
md: { value: `${SPACING.MEDIUM}px` }, | ||
lg: { value: `${SPACING.LARGE}px` }, |
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.
constants 활용 👍
틀을 정말 잘만드신 것 같습니다. 세세하게 놓칠수 있는 부분도 전부 처리해놓으셨고 방대한 양의 코드와 정확도에 박수 치고 갑니다. 정말 수고하셨습니다! |
📝 변경 사항
🔍 변경 사항 설명
상수 분리
framer motion 파일 분리
types 절대경로 문제
🙏 질문 사항
📷 스크린샷 (선택)
2024-11-13.2.23.43.mov
✅ 작성자 체크리스트