-
Notifications
You must be signed in to change notification settings - Fork 7
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
[이가빈] 10주차 과제 제출 #49
base: member/gabin
Are you sure you want to change the base?
[이가빈] 10주차 과제 제출 #49
Conversation
가빈님 안녕하세요, 가빈님의 10주차 코드 리뷰를 맡은 짝 리드 김민용입니다. 1. QnA
2. 그 외 개선점
상세한 코드는 아래 코멘트로 달도록 하겠습니다. 10주차 과제 수고하셨습니다! |
return ( | ||
<Container> | ||
<Navbar> | ||
<StyledLink to="/" activeClassName="active">글 목록</StyledLink> | ||
{isLoggedIn && <StyledLink to="/write" activeClassName="active">글쓰기</StyledLink>} | ||
<StyledLink to="/register" activeClassName="active" onClick={handleLogout}> | ||
{isLoggedIn ? '로그아웃' : '로그인/회원가입'} | ||
</StyledLink> | ||
{isLoggedIn && <StyledLink to="/heart" activeClassName="active">좋아요 누른 글</StyledLink>} | ||
</Navbar> | ||
{renderRoutes()} | ||
</Container> | ||
); | ||
} |
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-1. App.js의 activeClassName -> className 수정
return ( | |
<Container> | |
<Navbar> | |
<StyledLink to="/" activeClassName="active">글 목록</StyledLink> | |
{isLoggedIn && <StyledLink to="/write" activeClassName="active">글쓰기</StyledLink>} | |
<StyledLink to="/register" activeClassName="active" onClick={handleLogout}> | |
{isLoggedIn ? '로그아웃' : '로그인/회원가입'} | |
</StyledLink> | |
{isLoggedIn && <StyledLink to="/heart" activeClassName="active">좋아요 누른 글</StyledLink>} | |
</Navbar> | |
{renderRoutes()} | |
</Container> | |
); | |
} | |
return ( | |
<Container> | |
<Navbar> | |
<StyledLink to="/" className={({ isActive }) => (isActive ? "active" : "")}>글 목록</StyledLink> | |
{isLoggedIn && <StyledLink to="/write" className={({ isActive }) => (isActive ? "active" : "")}>글쓰기</StyledLink>} | |
<StyledLink to="/register" className={({ isActive }) => (isActive ? "active" : "")} onClick={handleLogout}> | |
{isLoggedIn ? '로그아웃' : '로그인/회원가입'} | |
</StyledLink> | |
{isLoggedIn && <StyledLink to="/heart" className={({ isActive }) => (isActive ? "active" : "")}>좋아요 누른 글</StyledLink>} | |
</Navbar> | |
{renderRoutes()} | |
</Container> | |
); | |
} |
<StyledLink to="/register" activeClassName="active" onClick={handleLogout}> | ||
{isLoggedIn ? '로그아웃' : '로그인/회원가입'} | ||
</StyledLink> |
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-1. 로그인/회원가입 버튼 눌렀을 때도 "로그아웃 되었습니다." alert창이 뜨는 오류
<StyledLink
to="/register"
className={({ isActive }) => (isActive ? "active" : "")}
onClick={isLoggedIn ? handleLogout : null}
>
{isLoggedIn ? "로그아웃" : "로그인/회원가입"}
</StyledLink>
handleLogout
이 적용되는 onClick
이벤트 부분을 수정해줍니다.
const handleLogin = async (e) => { | ||
e.preventDefault(); | ||
const { id, pw } = login; | ||
const res = await postLogin(id, pw); | ||
if (res.status === 201) { | ||
alert(`로그인 성공! ${res.data.username}님 환영합니다.`); | ||
localStorage.setItem("efubtoken", res.data.token); | ||
client.defaults.headers.common["Authorization"] = res.data.token; | ||
navigate("/"); | ||
window.location.reload(); | ||
} else if (res.response.status === 400) { | ||
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.
- 2-2. try ~ catch 문으로 예외 처리 강화
const handleLogin = async (e) => { | |
e.preventDefault(); | |
const { id, pw } = login; | |
const res = await postLogin(id, pw); | |
if (res.status === 201) { | |
alert(`로그인 성공! ${res.data.username}님 환영합니다.`); | |
localStorage.setItem("efubtoken", res.data.token); | |
client.defaults.headers.common["Authorization"] = res.data.token; | |
navigate("/"); | |
window.location.reload(); | |
} else if (res.response.status === 400) { | |
alert("아이디와 비밀번호가 맞는지 다시 확인해주세요!"); | |
} | |
}; | |
const handleLogin = async (e) => { | |
e.preventDefault(); | |
const { id, pw } = login; | |
try { | |
const res = await postLogin(id, pw); | |
if (res.status === 201) { | |
alert(`로그인 성공! ${res.data.username}님 환영합니다.`); | |
localStorage.setItem("efubtoken", res.data.token); | |
client.defaults.headers.common["Authorization"] = res.data.token; | |
navigate("/"); | |
window.location.reload(); | |
} else if (res.response.status === 400) { | |
alert("아이디와 비밀번호가 맞는지 다시 확인해주세요!"); | |
} | |
} catch (error) { | |
console.error("로그인 오류", error); | |
} | |
}; |
handleLogin에 적용한 예시입니다.
결과 소개
로그인 / 회원가입
전체 글 목록
기능 설명
어려웠던 점, 질문
로그아웃할 경우에만 alert 창을 출력하도록 하려고 했었는데 처음 로그인 버튼을 클릭할 때도 "로그아웃 되었습니다" alert 창이 뜨는 문제가 있습니다. 분기를 나눌 수 있는 방법을 알려주시면 감사하겠습니다!
Failed to load resource: the server responded with a status of 500 () 문제