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

[양진수] week14 #519

Merged

Conversation

Accept77
Copy link
Collaborator

@Accept77 Accept77 commented Dec 10, 2023

요구사항

기본

  • [로그인 페이지] “회원 가입하기”를 클릭하면 ‘/signup’ 페이지로 이동하나요?
  • [로그인 페이지] 이메일 input에 placeholder는 “이메일을 입력해 주세요.”, 비밀번호 input에 placeholder는 “비밀번호를 입력해 주세요.”가 보이나요?
  • [로그인 페이지] 이메일 input에서 focus out 할 때, 값이 없을 경우 아래에 “이메일을 입력해주세요.” 에러 메세지가 보이나요?
  • [로그인 페이지] 이메일 input에서 focus out 할 때, 이메일 형식에 맞지 않는 값이 있는 경우 아래에 “올바른 이메일 주소가 아닙니다.” 에러 메세지가 보이나요?
  • [로그인 페이지] 비밀번호 input에서 focus out 할 때, 값이 없을 경우 아래에 “비밀번호를 입력해주세요.” 에러 메세지가 보이나요?
  • [로그인 페이지] 로그인 실패하는 경우, 이메일 input 아래에 “이메일을 확인해주세요.”, 비밀번호 input 아래에 “비밀번호를 확인해주세요.” 에러 메세지가 보이나요?
  • [로그인 페이지] 로그인 버튼 클릭 또는 Enter키 입력으로 로그인 실행 되나요?
  • [로그인 페이지] https://bootcamp-api.codeit.kr/docs 에 명세된 “/api/sign-in”으로 { “email”: “[email protected]”, “password”: “sprint101” } POST 요청해서 성공 응답을 받으면 “/folder”로 이동하나요?
  • [회원가입 페이지] “회원 가입하기”를 클릭하면 ‘/signin’ 페이지로 이동하나요?
  • [회원가입 페이지] 이메일 input에 placeholder는 “이메일을 입력해 주세요.”, 비밀번호 input에 placeholder는 “영문, 숫자를 조합해 8자 이상 입력해 주세요. ”비밀번호 확인 input에 placeholder는 “비밀번호와 일치하는 값을 입력해 주세요.”가 보이나요?
  • [회원가입 페이지] 이메일 input에서 focus out 할 때, 값이 없을 경우 “이메일을 입력해주세요.” 에러 메세지가 보이나요?
  • [회원가입 페이지] 이메일 input에서 focus out 할 때, 이메일 형식에 맞지 않는 값이 있는 경우 “올바른 이메일 주소가 아닙니다.” 에러 메세지가 보이나요?
  • [회원가입 페이지] 비밀번호 input에서 focus out 할 때, 값이 8자 미만으로 있거나 문자열만 있거나 숫자만 있는 경우, “비밀번호는 영문, 숫자 조합 8자 이상 입력해 주세요.” 에러 메세지가 보이나요?
  • [회원가입 페이지] 비밀번호 input과 비밀번호 확인 input의 값이 다른 경우, 비밀번호 확인 input 아래에 “비밀번호가 일치하지 않아요.” 에러 메세지가 보이나요?
  • [회원가입 페이지] 회원가입을 실행할 경우, 문제가 있는 경우 문제가 있는 input에 에러 메세지가 보이나요?
  • [회원가입 페이지] 회원가입 버튼 클릭 또는 Enter키 입력으로 회원가입 실행 되나요?
  • [회원가입 페이지] 이메일 중복 확인은 “/api/check-email” POST 요청해서 확인 할 수 있나요?
  • [회원가입 페이지] 유효한 회원가입 형식의 경우 “/api/sign-up” POST 요청하고 성공 응답을 받으면 “/folder”로 이동하나요?
  • [로그인, 회원가입 페이지 공통] 눈 모양 아이콘 클릭시 비밀번호의 문자열이 보이기도 하고, 가려지나요?
  • [로그인, 회원가입 페이지 공통] 비밀번호의 문자열이 가려질 때는 눈 모양 아이콘에는 사선이 그어져있고, 비밀번호의 문자열이 보일 때는 사선이 없는 눈 모양 아이콘이 보이나요?
  • [로그인, 회원가입 페이지 공통] 소셜 로그인에 구글 아이콘 클릭시 ‘https://www.google.com/’, 카카오 아이콘 클릭시 ‘https://www.kakaocorp.com/page’로 이동하나요?
  • [로그인, 회원가입 페이지 공통] 로그인/회원가입시 성공 응답으로 받은 accessToken을 로컬 스토리지에 저장하나요?
  • [로그인, 회원가입 페이지 공통] 로그인/회원가입 페이지에 접근시 로컬 스토리지에 accessToken이 있는 경우 ‘/folder’ 페이지로 이동하나요?

심화

  • [심화] 로그인, 회원가입 기능에 react-hook-form을 활용했나요?

주요 변경사항

  • sign in, up 페이지 제작

스크린샷

멘토에게

  • 다음 리뷰에는 남겨주신 코멘트에 답변하도록 하겠습니다
  • 저번 리뷰가 잘 반영이 안되어 있습니다 이번에는 최대한 반영해보겠습니다
  • index 페이지는 미완성입니다.
  • passwordInputcheck이라는 boolean 값을 받아서 재활용 해보려 했지만 그러면 props부터 너무 지저분해진다 생각해 passwordCheckInput을 제작했습니다.
  • localStorage를 사용하려고 했는데 오류가 나와 찾아보니 CSR 이전에 SSR 과정에서 브라우저 전역 객체를 사용할 수 없어서 useEffect에 넣거나 typeof window !== ‘undefined’ 2가지 방법이 있던데 뭔가 더 좋은 방법이 있는지 궁금합니다.
  • 이번에도 잘 부탁드립니다 :)

@Accept77 Accept77 requested a review from SINHOLEE December 10, 2023 10:08
@Accept77 Accept77 added the 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. label Dec 10, 2023
@Accept77 Accept77 changed the title Part3 양진수 [양진수] week14 Dec 10, 2023
component/common/input.tsx Show resolved Hide resolved
component/api/api.ts Show resolved Hide resolved
component/common/input.tsx Show resolved Hide resolved
component/common/input.tsx Show resolved Hide resolved
component/common/input.tsx Show resolved Hide resolved
component/common/input.tsx Show resolved Hide resolved
pages/signin.tsx Show resolved Hide resolved
Comment on lines +42 to +51
async function postApi() {
try {
const { data } = await postSignIn(emailValue, passwordValue);
localStorage.setItem("accessToken", data.accessToken);
Router.push("/folder");
} catch (e) {
setEmailError("이메일을 확인해주세요.");
setPasswordError("비밀번호를 확인해주세요.");
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

emailValue랑 passwordValue가 valid 한지 생각해보세요.
postApi가 실행되는 시점에 항상 valid하지 않을것같네요.

순서는

  1. input이 변할때마다 validate check를 실행한다.
  2. valid한지 안한지 확인하고, valid할때만 postApi를 호출하도록 가드로직을 만든다.

Comment on lines +76 to +112
<StyledInputBox>
이메일
<InputEmail
emailValue={emailValue}
setEmailValue={setEmailValue}
emailError={emailError}
setEmailError={setEmailError}
postApi={postApi}
/>
</StyledInputBox>
<StyledInputBox>
비밀번호
<InputPassword
signUp
passwordValue={passwordValue}
setPasswordValue={setPasswordValue}
passwordError={passwordError}
setPasswordError={setPasswordError}
postApi={postApi}
/>
</StyledInputBox>
<StyledInputBox>
비밀번호 확인
<InputPasswordCheck
passwordCheckValue={passwordCheckValue}
setPasswordCheckValue={setPasswordCheckValue}
passwordCheckError={passwordCheckError}
setPasswordCheckError={setPasswordCheckError}
passwordValue={passwordValue}
postApi={postApi}
/>
</StyledInputBox>
</StyledLoginInputBox>
<StyledLoginButtonBox>
<StyledLoginButton onClick={postApi}>
회원가입
</StyledLoginButton>
Copy link
Collaborator

Choose a reason for hiding this comment

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

각 인풋과 회원가입 버튼에 각각 postApi를 주입하는게 맞는 구조일까요?

input의 역할은 오직 값을 입력하고, 나아가 유효성 로직에 따라 에러ui를 보여주는것까지 가지고 있어야할거같아요. 그이상(api호출)은 불필요하게 많은 책임을 가지고있어보입니다.
input에서 엔터를 쳤을 때 api가 호출하는 기능을 구현하고 싶었다면

form 태그와 submit 동작에 관해 이해해 보시면 좋을것같아요.
https://ko.javascript.info/forms-submit

@SINHOLEE SINHOLEE merged commit 01a2435 into codeit-bootcamp-frontend:part3-양진수 Dec 14, 2023
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