-
Notifications
You must be signed in to change notification settings - Fork 79
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
[김보미] Sprint12 #735
The head ref may contain hidden characters: "React-\uAE40\uBCF4\uBBF8-sprint12"
[김보미] Sprint12 #735
Conversation
useEffect(() => { | ||
const token = localStorage.getItem("accessToken"); | ||
if (token) { | ||
setAccessToken(token); |
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.
accessToken
은 굳이 state
로 관리하기보다는 아래처럼 관리해주시면 더욱 코드가 간결해집니다.
const accessToken = useMemo(() => localStorage.getItem('accessToken'), []);
const goToMain = () => navigate("/"); | ||
const goToSignin = () => navigate("/signin"); | ||
|
||
const pathName = location.pathname; |
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.
현재 pathName
에 의해서 UI가 렌더링 되는 부분이 많습니다. 그렇기 때문에 다른 prop
이나 state
에 의해 불필요한 재선언이 안되게끔 코드를 작성해주셔야 합니다.
const pathName = useMemo(() => location.pathname, [location.pathname]);
onPageChange(currentPage + 1); | ||
}; | ||
|
||
const pages = useMemo( |
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.
현재 totalPages
props로 Math.ceil(totalPosts / pageSize)
값이 들어오는 상황인데, 이렇게 되면 만약 생성되는 page 버튼이 pageSize를 초과하는 경우가 나오지 않나요..?
ex) totalPosts의 lenght가 212
인 경우 페이지네이션 UI는 <이전> [21] [22] <다음>
이렇게 렌더링되어야 하는데, 현재 경우는 <이전> [1] ~ [22] <다음>
이렇게 생성될 것 같네요.
const handleDeleteProduct = async (productId: number) => { | ||
try { | ||
if (item.id) { | ||
await deleteProducts(productId) |
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.
아래 67번 라인의 patchProducts
도 마찬가지, 해당 api가 실패하는 경우 단순 log 출력이 아닌 사용자에게 메시지를 직접 전달해주시면됩니다.
// accessToken이 존재하는 경우, 헤더에 추가 | ||
if (accessToken) { | ||
config.url?.includes('upload') | ||
? (config.headers['Content-Type'] = 'multipart/form-data') |
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.
Content-Type
을 분기처리할때는 아래처럼 해주시면 됩니다.
if(config.data instanceof FormData) {
config.headers['Content-Type'] = 'multipart/form-data';
}
|
||
const handleSubmit = async (e: React.FormEvent) => { | ||
e.preventDefault() | ||
await handleFormSubmit() |
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.
handleFormSubmit
의 결과가 실패가 뜨더라도 게시글 등록이 완료됬다는 아래 alert
이 동작하게 됩니다.
이런 부분은 수정이 반드시 필요합니다.
요구사항
기본
중고마켓
상품 상세
상품 등록
주요 변경사항
스크린샷
멘토에게