-
Notifications
You must be signed in to change notification settings - Fork 1
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
[4주차 기본/심화/생각 과제] 🍁 로그인/회원가입 #5
base: main
Are you sure you want to change the base?
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.
과제 하느라 넘넘 수고했어용요오요옹❤
이번에도 정우의 지독한 짱구 사랑이 보이는,,,
앞으로 2주동안 합세 화이팅하구 우리의 코리는 이어진다,,👊 화이팅!!!
@@ -0,0 +1,13 @@ | |||
<!doctype html> | |||
<html lang="en"> |
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.
우리 요거요거 팟짱님이 한글을 사랑하시는 만큼! 바꿔줍시다!!
<meta charset="UTF-8" /> | ||
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
<title>Vite + React</title> |
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.
요 친구도!! 저희가 지금 진행하는 프로젝트의 title 인데 수정 한 번씩 부탁해요!!
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.
혹시 이거 사용하지 않는다면 삭제 부탁해요 (소곤소곤)
|
||
const navigate = useNavigate(); | ||
|
||
const handleChangeIdInput = (e) => { |
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줄일 때, 밖으로 빼주는 게 좋을까요 인라인에 적는 게 좋을까요,,,,
저는 코드가 길어지는 게 싫어서 인라인으로 작성했는데 여러분들의 의견이 궁금합니다,,,
<InputOptionText>ID</InputOptionText> | ||
<InputBox | ||
type="text" | ||
name="" |
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.
요오기를,,,왜,,빈값으로 줬을까요,,??
<ModalContainer> | ||
<ModalTitle>MY PAGE</ModalTitle> | ||
<UserInfoContainer> | ||
<ProfileImage src={profileImage} alt="프로필 이미지" /> |
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.
앗 나 alt 안 썼다 ㅋㅎㅋㅋ
const [isComplete, setIsComplete] = useState(false); | ||
|
||
useEffect(() => { | ||
setIsComplete( |
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
안에 바로 setter 함수를 넣어줬군뇨,, 생각치 못했던 방향인데 좋은 것 같아요 굳굳구욷
} | ||
}; | ||
|
||
console.log(isExist); |
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.
요거 이제 필요 없으니까 삭제해줍시다!!
<InputOptionText>ID</InputOptionText> | ||
<UserIdInputBox | ||
type="text" | ||
name="" |
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.
스터디 발표에 치이는 와중에도 너무 깔-끔하게 과제했당
완전완전 수고많았구 합세두 화이팅-!!
- 짱구 프사 아주 인상적.
*.sw? | ||
|
||
#env 파일 | ||
.env |
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.
별 다섯개,,⭐️⭐️⭐️⭐️⭐️
week4/Login-System/README.md
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.
요 파일은 지워줘도 될거 같으용~
<meta charset="UTF-8" /> | ||
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||
<title>Vite + React</title> |
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.
우리 요거 title도 바꿔줍시댱~
<html lang="en"> | ||
<head> | ||
<meta charset="UTF-8" /> | ||
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> |
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.
요것두 기존으로 들어가있는 svg파일이라 빼줘도 됩니당~
week4/Login-System/public/vite.svg
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.
이것두 삭제해주세용~
const [id, setId] = useState(""); | ||
const [passwd, setPasswd] = useState(""); | ||
const [nickname, setNickname] = useState(""); | ||
const [isExist, setIsExist] = useState(0); |
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.
pr에 요기 적어놨던데 나두 그냥 Boolean 값으로 해서 할라했더니 경우의 수가 3가지더라구,,
가형한테도 물어보고 해서 결국엔 디폴트 값을 안 넣어주고 중복되지 않을 때가 true, 중복될 때가 false, 그리도 아직 체크 하지 않았을 때가 setState() 상태로 해줬는데 사실 아직까지 이래도 되는건지 확실하진 않움,,
const handleClickLogoutButton = () => { | ||
navigate("/login"); | ||
}; |
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 뿐이고 어디 다른데서 재사용이 되지 않는데
따로 함수로 빼줘야할까???하는 생각~~
if (id === "") { | ||
alert("아이디를 입력해 주세요!!"); | ||
} else if (passwd === "") { | ||
alert("비밀번호를 입력해 주세요!!"); |
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.
허걱 이거 좋은 생각이당,,,!!
친절해~
const handleChangeIdInput = (e) => { | ||
setId(e.target.value); | ||
}; | ||
|
||
const handleChangePasswdInput = (e) => { | ||
setPasswd(e.target.value); | ||
}; |
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.
이 두 함수들도 기능이 한개고 재사용이 안되는데
따로 함수로 빼지않고 이 함수가 사용되는데서 바로
onChange={(e) => {setPasswd(e.target.value)}};
이러케 해줘도 되지 않을까용??
<Button | ||
color="white" | ||
onClick={handleClickCompleteSignUpButton} | ||
disabled={!isComplete} |
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.
👍🏼👍🏼👍🏼
✨ 구현 기능 명세
🌱 기본 조건
.env
파일 사용하기🧩 기본 과제
[ 로그인 페이지 ]
/mypage/:userId
로 넘어갑니다. (여기서userId
는 로그인 성공시 반환 받은 사용자의 id)/signup
으로 이동합니다.[ 회원가입 페이지 ]
중복체크 버튼
회원가입 버튼
/login
으로 이동합니다.[ 마이 페이지 ]
/mypage/:userId
의 userId를 이용해 회원 정보를 조회합니다.🌠 심화 과제
[ 로그인 페이지 ]
createPortal
을 이용합니다.[ 회원가입 페이지 ]
비밀번호 확인
중복체크
생각과제
💎 PR Point
useParams 훅으로 url에서 파라미터 userid값을 받아온 다음에 이 값을 이용해 유저 정보 api를 호출해 정보를 얻어와서 렌더시켰다.
기본과제인 줄 알고 했는데 심화과제였다. 중복체크 state인 isExist로 0, 1, 2를 줬는데 0은 중복체크를 아직 안 한 상태, 1은 중복체크 실패, 2는 중복체크 성공 상태이다. ID 입력 input에 onChange되면 발생하는 이벤트 핸들러인 handleChangeIdInput에 setIsExist(0);을 해줘서 중복체크가 완료되었더라도 추가적으로 ID 값 변경이 있으면 다시 중복체크 안 한 상태로 돌아가도록 해주었다.
❓ 궁금한 점: 0, 1, 2로만 하면 사실 다른 사람이 눈으로 보기엔 어떤 게 어떤 상태인지 모르기 때문에 가독성이 떨어지는 코드가 되어서 별로라는 생각이 드는데... 이렇게 해도 괜찮은지, 안 괜찮다면 어떻게 하는 게 좋은지 궁금해요!!!!!
🥺 소요 시간, 어려웠던 점
6h
🌈 구현 결과물
2023-11-17.6.29.00.mov
⭐️ 심화과제 적용 영상
2023-12-15.5.43.23.mov