-
Notifications
You must be signed in to change notification settings - Fork 6
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
feat-fe: 로그인이 되어있을 시 대시보드로 리다이렉트 #899
Conversation
1729659369.789389 |
1729659372.557189 |
1729659456.811939 |
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.
렛서 고생하셨어요! 로그인 화면에서 매번 새로 로그인 해야 하는 수고가 사라져서 기쁩니다 😄 한 가지 궁금한 점이 있어서 코멘트 드렸어요. 기능/코드적으로 크게 피드백 드릴 부분이 없어 Approve 드립니다.
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.
새로 만들어주신 RedirectGuard 좋네요 👍
@@ -25,9 +33,13 @@ export default function useClubId() { | |||
localStorage.removeItem(CLUB_ID_KEY); | |||
}; | |||
|
|||
const clubId = useSyncExternalStore(subscribe, getSnapshot, getSnapshot); |
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.
처음 보는 React 훅이어서 공식 문서를 한참 들여다 봤네요 😅 내부적으로 필요한 데이터가 리액트 외부에 의존성을 가지고 있을 때 이를 간편하게 처리해주는 건가보네요. 렛서 덕분에 좋은 것을 새로 배워갑니다.
한 가지 궁금한 점이 있는데, 이 훅의 3번째 인자는 getServerSnapshot
로써 SSR과 Hydration을 위한 optional 인자로 알고 있어요. 여기에도 똑같이 getSnapshot
을 넣어주신 이유가 궁금해요!
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.
navigate가 왜 안되는지 궁금하네용! 공부해볼게요~
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Kim Da Eun <[email protected]>
목적
참고사항
useSyncExternalStore
사용해useClubId
리팩토링이번 작업에서는 useClubId 훅을 useSyncExternalStore로 리팩토링하여, localStorage의 clubId 상태를 실시간으로 동기화하도록 개선했습니다.
로그인 페이지에서 clubId 존재 여부에 따라 조건부 렌더링이 필요했지만, localStorage는 React 상태와 직접 연결되지 않으므로 값의 변화를 감지하려면 useEffect를 활용한 동기화가 필요했습니다. 이러한 로직을 SignIn 컴포넌트가 직접 관리하지 않도록, useClubId 훅으로 추상화했습니다.
useSyncExternalStore는 구독-알림 패턴을 통해 외부 데이터(localStorage)와 React 상태를 실시간으로 동기화할 수 있으므로, 이를 적용해 동기화 로직을 간소화했습니다.
SIGN_IN_02
closes #898