Skip to content
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

Conversation

wayandway
Copy link
Collaborator

@wayandway wayandway commented Jun 14, 2024

배포 링크

요구사항

Github에 PR(Pull Request)을 만들어서 미션을 제출합니다.
피그마 디자인에 맞게 페이지를 만들어 주세요.
기존의 스프린트 미션 8에 이어서 React, Typescript를 사용합니다.

기본

회원가입

  • 유효한 정보를 입력하고 스웨거 명세된 “/auth/signUp”으로 POST 요청해서 성공 응답을 받으면 회원가입이 완료됩니다.
  • 회원가입이 완료되면 “/login”로 이동합니다.
  • 회원가입 페이지에 접근시 로컬 스토리지에 accessToken이 있는 경우 ‘/’ 페이지로 이동합니다.

로그인

  • 회원가입을 성공한 정보를 입력하고 스웨거 명세된 “/auth/signIn”으로 POST 요청을 하면 로그인이 완료됩니다.
  • 로그인이 완료되면 로컬 스토리지에 accessToken을 저장하고 “/” 로 이동합니다.
  • 로그인/회원가입 페이지에 접근시 로컬 스토리지에 accessToken이 있는 경우 ‘/’ 페이지로 이동합니다.

메인

  • 로컬 스토리지에 accessToken이 있는 경우 상단바 ‘로그인’ 버튼이 판다 이미지로 바뀝니다.

심화

  • 로그인, 회원가입 기능에 react-hook-form을 활용해봅니다.

주요 변경사항

  • 유저 인증 기능을 추가했습니다.
  • react-hook-form 을 사용했습니다.

스크린샷

image
image
image

멘토에게

  • 추가 질문은 코멘트로 남겨두겠습니다 ☺️

@wayandway wayandway added the 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. label Jun 14, 2024
@wayandway wayandway self-assigned this Jun 14, 2024
@wayandway wayandway requested a review from lisarnjs June 14, 2024 12:36
Copy link
Collaborator

@lisarnjs lisarnjs left a 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);
Copy link
Collaborator

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} />;
Copy link
Collaborator

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 {
Copy link
Collaborator

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
Copy link
Collaborator

Choose a reason for hiding this comment

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

보통은 CustomButton 처럼 일반 태그명과는 다른 좀더 컴포넌트의 목적이 드러나도록 컴포넌트명을 지어주는 것이 좋습니다!

});

// 토큰이 있으면 홈으로 리디렉션
useEffect(() => {
Copy link
Collaborator

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 }}>
Copy link
Collaborator

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) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

여기도 if문이 2개나 사용되면서 중첩됬는데 이를 수정해볼 수는 없을까요!?

@lisarnjs lisarnjs merged commit 1821339 into codeit-bootcamp-frontend:Next.js-김지윤 Jun 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants