-
Notifications
You must be signed in to change notification settings - Fork 0
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
Tool setting & 공통교양 영역 내 채플 카테고리 추가 #150
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.
- 수고하셨습니다
- 저는 UserDeleteModal과 UserDeleteButton이 결합될 필요는 없다고 생각해요. UserDeleteModal은 UserDeleteButton 외에도 다른 컴포넌트에 의해 호출될 수 있고, UserDeleteButton도 자신의 역할을 수행하는 데 Modal의 존재를 알 필요가 없기 때문입니다. 둘은 응집되는 것보다 약하게 결합된 상태로 있는 게 더 유연성을 가질 수 있을 것 같아요.
- 다만 말씀해주신 대로 layout에 위치하는 건 불필요한 렌더링이 발생하니, 해당 모달이 등장하는 페이지 수준에서 종속시키는 게 좋을 것 같습니다.
app/utils/global/channel-talk.tsx
Outdated
if (typeof window !== 'undefined') { | ||
ChannelService.loadScript(); | ||
ChannelService.boot({ | ||
pluginKey: process.env.NEXT_PUBLIC_CHANNELTALK_PLUGIN ?? '', | ||
}); | ||
} |
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.
- 컴포넌트 내부에 있으면 채널톡 내부 SDK에서 처리해주지 않는 한 리렌더링으로 인한 중복 호출이 발생할 수 있을 것 같은데, 공식 가이드에서 이 위치에 삽입하라고 했던 걸까요?
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.
공식가이드 내에서 위치를 권장하지는 않았고 제가 해당 위치에 선언한 이유는 아래와 같습니다.
- 전역에 존재해야할 수 있는 layout
- 브라우저 내에서 실행되어야하므로 client component
useEffect를 통해서 리렌더링을 통한 중복호출을 방지할 수 있을 것 같은데, 혹시 더 좋은 방법 제안해주시면 반영해서 수정하겠습니다 ! decf073
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.
- 이해했습니다! 말씀하신 대로 useEffect가 더 적절할 것 같습니다. 현재 방식대로 하면 페이지마다 채널톡을 호출하게 되는데, 이것이 의도하신 바라면 그대로 두셔도 됩니다. 다만, 그렇지 않다면 공식 문서에서 제안하는 대로 최상위 변수를 사용해 한 번만 실행하게 하는 것도 좋아 보입니다.
https://ko.react.dev/learn/you-might-not-need-an-effect#initializing-the-application
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.
7748eaf
주신 의견을 통해서 책임이 더욱 잘 드러나도록 변경해봤습니다. 의견 감사합니다 !
app/google-analytics.tsx
Outdated
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.
- Next.js에서 GA4를 위한 서드파티 라이브러리가 있는 것으로 알고 있어요! 이걸로 전환하는 건 어떨까요?https://nextjs.org/docs/app/building-your-application/optimizing/third-party-libraries#google-analytics
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.
고생하셨ㅂ습니다 마이페이지 오류는 작업하겠습니다 알려주셔서 감사합니다~!
app/layout.tsx
Outdated
<GoogleAnalytics /> | ||
<ChannelTalk /> |
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.
ChannelTalk 컴포넌트는 utils에 존재하고 google analytics는 외부에 존재하는 이유가 있을까요?
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.
커밋 관리 과정에서 누락된 부분 같아요 감사합니다! 28ceccf
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.
정확한 화면이 제공되지 않아서 제가 추측해보자면
채플이 1.5인데 3번 보이지 않는 문제
option이 미이수 과목상태에 존재하는 것 같습니다. 기이수 과목상태로 토글을 변경시키는 경우에는 채플과목이 3번 노출될 것이라고 생각합니다.
아마 우측 상단에서 현재 이수학점/총 이수학점
을 제공하고 있어서 문제라고 예상하신 것 같습니다. 남은 학점이 아닌 현재 이수학점으로 고정시켜둔 이유는 아래와 같습니다.
- 토글은 과목표시를 결정하므로 카테고리가 미이수 상태에 의존하지않음
- 졸업사정결과를 목적으로하는 유저들이 궁금한 점은 남은 과목 & 현재 진행사항이라고 파악
- 현재 이수학점의 노출을 통한 진척도 공유
- 미이수 상태를 default로하여 충족하지 못한 카테고리 공유
이 부분은 개발하면서도 고민했던 부분인데, 혹시 의견 공유해주시면 더 고민해보겠습니다 !
채플을 모두 이수했을 경우에는 채플 테이블이 따로 없는 문제
화면 캡쳐를 통해 보여주신 화면이 핵심교양영역인데, 채플은 공통교양 소속 카테고리라서 공통교양영역에서 확인 가능하실 것으로 예상됩니다
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.
채플을 모두 이수했을 경우에 채플 테이블이 존재하더라구요! 문제는 따로 없을 것 같습니당
completed: takenChapel * 0.5 >= 2.0, | ||
totalCredit: 2.0, | ||
takenCredit: takenChapel * 0.5, |
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.
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.
다만 말씀해주신 대로 layout에 위치하는 건 불필요한 렌더링이 발생하니, 해당 모달이 등장하는 페이지 수준에서 종속시키는 게 좋을 것 같습니다.
의견 감사합니다! 반영해서 수정했습니다. 2b2b75e 한가지 궁금한 점은 모달의 상태가 layout에 영향을 주지않으므로 리랜더링을 발생시키지 않는다고 생각하는데, 위와같이 생각하신 이유를 설명해주실 수 있나요?
app/utils/global/channel-talk.tsx
Outdated
if (typeof window !== 'undefined') { | ||
ChannelService.loadScript(); | ||
ChannelService.boot({ | ||
pluginKey: process.env.NEXT_PUBLIC_CHANNELTALK_PLUGIN ?? '', | ||
}); | ||
} |
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.
공식가이드 내에서 위치를 권장하지는 않았고 제가 해당 위치에 선언한 이유는 아래와 같습니다.
- 전역에 존재해야할 수 있는 layout
- 브라우저 내에서 실행되어야하므로 client component
useEffect를 통해서 리렌더링을 통한 중복호출을 방지할 수 있을 것 같은데, 혹시 더 좋은 방법 제안해주시면 반영해서 수정하겠습니다 ! decf073
|
📌 작업 내용
🤔 고민 했던 부분
provider
->global
로 변경 후 해당 폴더의 하위에 위치시켰어요<UserDeleteModal />
이 위치하는 것을 확인했습니다. UserDeleteModal이 최상위 layout에 위치하는 것 보다는 아래 두가지 위치 중 하나에 위치하는 것이 의미적으로 더 가까울 것 같다는 생각이 들어 1번으로 변경을 진행해봤는데, 팀원분들의 의견은 어떤지 궁금합니다 !UserDeleteModal
와UserDeleteButton
이 같은 목적을 갖고 있는 도메인 컴포넌트이므로 UserDeleteModal을 UserDeleteButton에 위치<UserDeleteModal />
이 호출되는 mypage와 navigationBar에 모두 위치🔊공유