-
Notifications
You must be signed in to change notification settings - Fork 79
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
[김지윤] Sprint11 #688
The head ref may contain hidden characters: "Next.js-\uAE40\uC9C0\uC724-sprint11"
[김지윤] Sprint11 #688
Conversation
- accessToken을 로컬스토리지에 저장 - refreshToken을 통해 accessToken 재발급 요청
- AuthContext - 로그인, 로그아웃 함수 - useAuth 커스텀 훅
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-hook-form을 더 잘쓰시는 것 같은데요 ㅎㅎ
이번주도 화이팅하세요 !!
display: inline; | ||
cursor: default; | ||
span { | ||
@include font-style(16px, 800, $grey-800); |
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.
오 mixin 으로 font-style을 만들어주셨군요!! 👍
[className]: className, | ||
}); | ||
|
||
return <div className={pageClassName} {...props} />; |
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.
classNames로 불러오기 너무 길어서 저는 이런식으로 사용합니다!
import classnames from 'classnames/bind'
const cx = classnames.bind(styles)
<div className={cx(stylescontianer, {['authPage']: isAuthPage })}></div>
}, [router]); | ||
|
||
const onSubmit: SubmitHandler<SignInFormValues> = async (data) => { | ||
try { |
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.
try catch 너무 좋아요!
앞으로도 async await 쓸떄는 try catch를 기본적으로 사용해주는 습관!
</span> | ||
)} | ||
</div> | ||
<Button |
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.
보통은 CustomButton 처럼 일반 태그명과는 다른 좀더 컴포넌트의 목적이 드러나도록 컴포넌트명을 지어주는 것이 좋습니다!
}); | ||
|
||
// 토큰이 있으면 홈으로 리디렉션 | ||
useEffect(() => { |
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.
useCheckLogin() 만 호출해도
const token = localStorage.getItem("accessToken");
if (token) {
toast.success("이미 로그인된 상태입니다.");
router.push("/");
}
이 코드를 실행할 수 있도록 커스텀 훅으로 만들어줘서 여기저기 페이지에서 사용하면 로직 분리도 되고 너무 좋을 것 같은데요!/
}; | ||
|
||
return ( | ||
<AuthContext.Provider value={{ user, signIn, signOut }}> |
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.
필요한 상태값이나 함수들을 context 로 관리해서 여기저기 사용되는 로직(함수)들을 재사용할 수 있어서 너무 좋은 것 같네요 👍
if (error.response?.status === 401 && !isRefreshing) { | ||
isRefreshing = true; | ||
|
||
if (!refreshPromise) { |
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.
여기도 if문이 2개나 사용되면서 중첩됬는데 이를 수정해볼 수는 없을까요!?
배포 링크
요구사항
Github에 PR(Pull Request)을 만들어서 미션을 제출합니다.
피그마 디자인에 맞게 페이지를 만들어 주세요.
기존의 스프린트 미션 8에 이어서 React, Typescript를 사용합니다.
기본
회원가입
로그인
메인
심화
주요 변경사항
스크린샷
멘토에게