Skip to content

카테고리 메뉴 기능 구현#19

Open
JongMany wants to merge 3 commits intodevelopfrom
feature/product
Open

카테고리 메뉴 기능 구현#19
JongMany wants to merge 3 commits intodevelopfrom
feature/product

Conversation

@JongMany
Copy link
Contributor

🔍️ 이 PR을 통해 해결하려는 문제가 무엇인가요?

어떤 기능을 구현한건지, 이슈 대응이라면 어떤 이슈인지 PR이 열리게 된 계기와 목적을 Reviewer 들이 쉽게 이해할 수 있도록 적어 주세요
일감 백로그 링크나 다이어그램, 피그마를 첨부해도 좋아요

  • 데이터를 요청하여 카테고리 메뉴 구현

✨ 이 PR에서 핵심적으로 변경된 사항은 무엇일까요?

문제를 해결하면서 주요하게 변경된 사항들을 적어 주세요

  • 카테고리 데이터 요청 API 추가 & Prefetch를 사용하여 헤더 컴포넌트의 SSR

🔖 핵심 변경 사항 외에 추가적으로 변경된 부분이 있나요?

없으면 "없음" 이라고 기재해 주세요

  • 없음

🙏 Reviewer 분들이 이런 부분을 신경써서 봐 주시면 좋겠어요

개발 과정에서 다른 분들의 의견은 어떠한지 궁금했거나 크로스 체크가 필요하다고 느껴진 코드가 있다면 남겨주세요

🩺 이 PR에서 테스트 혹은 검증이 필요한 부분이 있을까요?

테스트가 필요한 항목이나 테스트 코드가 추가되었다면 함께 적어주세요

📌 PR 진행 시 이러한 점들을 참고해 주세요

  • Reviewer 분들은 코드 리뷰 시 좋은 코드의 방향을 제시하되, 코드 수정을 강제하지 말아 주세요.
  • Reviewer 분들은 좋은 코드를 발견한 경우, 칭찬과 격려를 아끼지 말아 주세요.
  • Review는 특수한 케이스가 아니면 Reviewer로 지정된 시점 기준으로 3일 이내에 진행해 주세요.
  • Comment 작성 시 Prefix로 P1, P2, P3 를 적어 주시면 Assignee가 보다 명확하게 Comment에 대해 대응할 수 있어요
    • P1 : 꼭 반영해 주세요 (Request Changes) - 이슈가 발생하거나 취약점이 발견되는 케이스 등
    • P2 : 반영을 적극적으로 고려해 주시면 좋을 것 같아요 (Comment)
    • P3 : 이런 방법도 있을 것 같아요~ 등의 사소한 의견입니다 (Chore)


📝 Assignee를 위한 CheckList

  • To-Do Item

@JongMany JongMany changed the title Feature/product 카테고리 메뉴 기능 구현 Feb 27, 2024
Copy link
Member

@pangkyu pangkyu left a comment

Choose a reason for hiding this comment

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

전체적으로 깔끔하게 코드 작성해주신 부분 잘 확인했습니다!
hydration으로 잘 작성하지 못했는데 종민님 코드보면서 배워가겠습니다 :)


코드를 보다가 궁금한 부분이 생겨서 의견 남깁니다

  • Depth.tsx 들이 카테고리에 마우스를 올렸을 때 펼쳐지는 컴포넌트라고 보여지는데, Depth1, Depth2, Depth3로 따로 분리하신 이유가 궁금합니다.

  • 코드를 작성하다보니 어떤 기준으로 use client의 사용 유무를 결정하는 지 인사이트가 부족하다고 생각이들었는데, 종민님은 어떤 기준으로 결정하시는 지 궁금합니다.

@@ -0,0 +1 @@
NEXT_PUBLIC_BASE_URL=https://objects-mb.com/ No newline at end of file
Copy link
Member

Choose a reason for hiding this comment

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

깃 이그노어 파일에 .env도 추가해주셔야 합니다 !

Copy link
Contributor Author

Choose a reason for hiding this comment

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

넵 제가 체크를 못하고 넘겼네요... 이부분도 고쳐놓도록 할게요!
hover 체크하기에 용이하도록 구현했습니다.
서버에서 넘겨주는 값들이 재귀적으로 속성을 물고 들어가게 되기 때문에 이쪽이 가독성 측면과 유지보수 측면에서 더 나을 것이라는 판단 때문에 Depth를 구분지어 줬습니다.

'use client' 같은 경우는 이벤트 핸들러나 state 관리를 사용해야 하는 경우에 대해서만 사용하는 것을 원칙으로 작성하고 있었습니다.
만약 서버 컴포넌트을 작성하다가 state가 필요할 것 같다 싶으면 해당 부분만 따로 빼서 클라이언트 컴포넌트로 작성했습니다.
또한, 클라이언트 서버에서 백엔드 서버에 요청을 하는 게 더 빠를 가능성이 높고, 보안에 유리하다는 장점이 있기 때문에 최대한 서버에서 데이터를 prefetch 하고, 클라이언트에서 hydration하는 형태로 코드를 작성하고 있습니다!

Copy link
Collaborator

Choose a reason for hiding this comment

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

.env.local 로 통일하면 좋을 것 같습니다. 특별한 기준은 없고, 처음부터 세팅할 때 .env.local로 등록되어 있어서 그걸 활용했는데, 같이 통일하면 좋을 것 같습니다.

Copy link
Collaborator

Choose a reason for hiding this comment

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

그리고 한 가지 궁금한 거 여쭤볼께요~

NEXT_PUBLIC_BASE_URL='https://objects-mb.com'

환경변수 설정할 때 single quote 하는 것과 안 하는 것 둘다 동작은 하는 것 같은데, 혹시 둘의 차이를 아시나요?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

보통 환경변수 설정할 때 ''은 안해주는 걸로 알고 있어요!

.env.local로 변경해보겠습니다!

Copy link
Member

Choose a reason for hiding this comment

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

저도 .env.local로 맞추겠습니다!
환경변수 같은 경우에는 공식문서상에서 따옴표를 붙이지 않아서 저도 안붙이는 방향으로 개발하고있습니다.

const [hoverNum, setHoverNum] = useState(0);

const isHover = !!hoverNum;
console.log(depth2List);
Copy link
Member

Choose a reason for hiding this comment

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

불필요한 주석 및 콘솔 로그를 제거해주시면 코드 가독성이 더 좋게 보일 것 같다고 생각해요!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

넵 이부분도 다시 체크해보겠습니다!

@DataCodeLiteracy
Copy link
Collaborator

저도 하이드레이션 하는 부분을 좀 신경써서 본 것 같습니다. 그 부분 코드 많이 들여다보고 저도 서버 컴포넌트의 역할과 클라이언트 컴포넌트의 역할에 대해서 좀 더 고민해보면서 코드를 작성해야겠다는 생각이 들었습니다.

덕분에 어떤 식으로 활용할지에 대한 감도 조금씩 잡히는 것 같고요!

고생하셨습니다!

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.

3 participants