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

[장용한] Sprint10 #297

Conversation

jangyonghan
Copy link
Collaborator

요구사항

기본

게시글 등록 페이지

  • 상품 등록 페이지 주소는 "/addboards" 입니다.
  • 게시판 이미지는 최대 한 개 업로드가 가능합니다.
  • [] 각 input의 placeholder 값을 정확히 입력해주세요.
  • 이미지를 제외하고 input 에 모든 값을 입력하면 '등록' 버튼이 활성화 됩니다.
  • [] 회원가입, 로그인 api를 사용하여 받은 accessToken을 사용하여 게시물 등록을 합니다.
  • [] '등록' 버튼을 누르면 게시물 상세 페이지로 이동합니다.

게시글 상세 페이지

  • 상품 상세 페이지 주소는 "/boards/[id]" 입니다.
  • [] 댓글 input 값을 입력하면 '등록' 버튼이 활성화 됩니다.
  • [] 활성화된 '등록' 버튼을 누르면 댓글이 등록됩니다.

주요 변경사항

  • 리액트 쿼리 사용으로 상태관리 변경

스크린샷

멘토에게

  • 아직 css와 기본 요구사항은 완료하지 못했는데 기본적인 api 연동과 잘못된 부분이 있으면 피드백 부탁드립니다.!

@jangyonghan jangyonghan requested a review from wlgns2223 August 16, 2024 13:42
@jangyonghan jangyonghan self-assigned this Aug 16, 2024
@jangyonghan jangyonghan added 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 미완성🫠 죄송합니다.. labels Aug 16, 2024
@@ -0,0 +1,13 @@
import axios from "axios";

const API_URL = "https://panda-market-api.vercel.app";
Copy link
Collaborator

Choose a reason for hiding this comment

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

NEXT 환경변수를 이용해서 관리해보시면 좋을 것 같아요 !
보안상의 이점이 있답니다.

content: string;
title: string;
nickname: string;
id?: number;
Copy link
Collaborator

Choose a reason for hiding this comment

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

확인했을때 id 필드는 옵셔널인가요? id는 거의 Required 일꺼같아서요 ~ !


const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
const nextValue =
e.target.files && e.target.files.length > 0 ? e.target.files[0] : null;
Copy link
Collaborator

Choose a reason for hiding this comment

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

이런 부분을 ts-patterns와 같은 라이브러리를 사용해서 가독성을 높여보시는건 어떨까요?

Comment on lines +30 to +40
useEffect(() => {
if (!value) return;

const nextPreview = URL.createObjectURL(value);
setPreview(nextPreview);

return () => {
setPreview(undefined);
URL.revokeObjectURL(nextPreview);
};
}, [value]);
Copy link
Collaborator

Choose a reason for hiding this comment

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

URL.createObjectURL을 이용해서 프리뷰 URL 생성 좋습니다 ~~

Copy link
Collaborator

Choose a reason for hiding this comment

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

그리고 언마운트시에 revoke도 좋아요 !

Comment on lines +5 to +15
.sronly {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip-path: inset(50%);
border: 0;
clip: rect(0 0 0 0);
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

지난번에 말한거 적용하셨네용 ~~~ 👍

@@ -1,12 +1,17 @@
import Header from "@/components/Header";
import type { AppProps } from "next/app";
import "@/styles/global.css";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";

const queryClient = new QueryClient();
Copy link
Collaborator

Choose a reason for hiding this comment

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

queryClientstate에 선언하는게 좋다고들하는데 혹시 그 이유를 들어보셨나요?

Comment on lines +31 to +36
onError: (error) => {
console.error("전송 실패:", error);
if (axios.isAxiosError(error)) {
console.error("axios error:", error.response?.data);
}
},
Copy link
Collaborator

Choose a reason for hiding this comment

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

onError시에 로그말고 유저에게 UI로써 뭔가 보여주면 더 좋습니다 !

Comment on lines +73 to +74
{mutation.status === "pending" ? (
<div>로딩 중...</div>
Copy link
Collaborator

Choose a reason for hiding this comment

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

mutation의 에러상태를 이용해서 유저에게도 보여주도록 하세요 ~

Comment on lines +35 to +37
if (isLoading) return <div>Loading...</div>;
if (error) return <div>Error loading comments</div>;
if (!articles) return <div>데이터 전송 안됨</div>;
Copy link
Collaborator

Choose a reason for hiding this comment

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

여기는 에러 처리를 잘 해주셨네요 ! 3가지 상태를 잘 관리해주셨습니다 ~ 이렇게 해주세요

@wlgns2223 wlgns2223 merged commit d3607e3 into codeit-bootcamp-frontend:Next-장용한 Aug 19, 2024
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