-
Notifications
You must be signed in to change notification settings - Fork 6
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
비밀번호 재설정 기능 버그 수정 #93
base: develop
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
import { useLocation } from "react-router-dom"; | ||
import { useHistory, useLocation } from "react-router-dom"; | ||
import queryString from "query-string"; | ||
import HeaderBeforeLogin from "./HeaderBeforeLogin"; | ||
import ContentBox from "components/Common/ContentBox"; | ||
|
@@ -77,6 +77,7 @@ export default function ResetPasswordForm() { | |
search, | ||
) as AuthType.resetPasswordQuery; | ||
const dispatch = useAppDispatch(); | ||
const history = useHistory(); | ||
const { errorMessage } = useAppSelector((state) => state.auth); | ||
|
||
const [newPasswordInputProps, newPasswordIsValid] = useInput( | ||
|
@@ -92,7 +93,11 @@ export default function ResetPasswordForm() { | |
); | ||
|
||
useEffect(() => { | ||
dispatch(checkCurrentURL({ code, username })); | ||
dispatch(checkCurrentURL({ code, username })) | ||
.unwrap() | ||
.catch(() => { | ||
history.push("/error"); | ||
}); | ||
}, []); | ||
Comment on lines
+96
to
101
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 commentThe reason will be displayed to describe this comment to others. Learn more. 하나씩 답변드릴게용! deps에 dispatch, code, username을 넣지 않은 이유가 있을까요?code, username은 백엔드가 넘겨준 url에서 추출해오기 때문에, 최초 렌더링 이후 변경될 가능성이 없기때문에 deps에 넣을 필요를 못 느꼈습니다. dispatch는 다른 곳에서도 계속 안넣어왔던 거 같은데, 영인님은 dispatch를 넣는 이유가 있으신가요? thunk별 수행하는 동작이: checkCurrentURL: 재설정 하기 위해 주어진 코드가 유효한지 확인, resetPassword: 비밀번호 재 설정 맞을까요?넵 맞습니다! thunk나 slice에서 라우트 이동이 불가능해서 이렇게 컴포넌트 내부에서 처리하도록 한 걸까요?(unwrap())네 맞아요. 이 부분 꽤나 고민했었는데..! 꼼꼼히 봐주셔서 감사합니다! 내부에서 useEffect로 위 동작을 처리한 경우 컴포넌트가 마운트 된 후에 코드 유효성 검사를 하게 되는데, 이 때 코드가 유효하지 않을 때 의미 없는 렌더링이 발생할 것 같아요. 굳이 그럴 필요 없이 상위 컴포넌트에서 로딩 처리를 위임하여 재설정 코드 유효성이 통과된다면 하위 컴포넌트인 ResetPasswordForm을 렌더링하도록 하는 건 어떨까요?
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
렌더링 관련 커밋 사항 발생하면 리뷰 하도록 하겠습니다! |
||
|
||
const resetPasswordClickHandler = ( | ||
|
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.
에러가 나지 않고 200번 대 response가 오더라도 "올바르지�않은 비밀번호 재설정 코드입니다." 인 경우에는 에러 처리를 해줘야 하지 않을까요?
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.
여기 catch문에서 처리될 거라고 생각했는데, 200번대였군요..! 이 부분도 에러처리 반영하겠습니다. 감사합니다