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

[염정훈] Sprint7 #219

Conversation

dang-96
Copy link
Collaborator

@dang-96 dang-96 commented Jul 5, 2024

요구사항

  • Github에 PR(Pull Request)을 만들어서 미션을 제출합니다.
  • 피그마 디자인에 맞게 페이지를 만들어 주세요.
  • React를 사용합니다

기본

상품상세

  • 상품 상세 페이지 주소는 “/items/{productId}” 입니다.
  • response 로 받은 아래의 데이터로 화면을 구현합니다.
    => favoriteCount : 하트 개수
    => images : 상품 이미지
    => tags : 상품태그
    => name : 상품 이름
    => description : 상품 설명
  • 목록으로 돌아가기 버튼을 클릭하면 중고마켓 페이지 주소인 “/items” 으로 이동합니다

상품 문의 댓글

  • 문의하기에 내용을 입력하면 등록 버튼의 색상은 “3692FF”로 변합니다.
  • response 로 받은 아래의 데이터로 화면을 구현합니다
    => image : 작성자 이미지
    => nickname : 작성자 닉네임
    => content : 작성자가 남긴 문구
    => description : 상품 설명
    => updatedAt : 문의글 마지막 업데이트 시간

주요 변경사항

  • 상품 상세 페이지 추가

스크린샷

상품 상세
상품 상세 활성화
상품 상세 테블릿
상품 상세 모바일

멘토에게

  • 상품 상세 페이지에서 상품 데이터를 가져올때 비동기로 가져오기 때문에 console.log에 확인하면 처음에는 상품 정보가 undefined로 표시되고 그 후에 상품 정보를 제대로 가져옵니다.
    그래서 그런지 처음에 상품정보를 제대로 못 가져와서 상품 데이터를 찾지 못했다는 에러가 표시됩니다. 이부분을 해결하기위해 검색해보니
    try catch문을 작성하고 로딩에 관해서 따로 상태를 관리해주면 가능하다고 해서 해결은 했지만 아직 제대로 이해는 못한 것 같습니다.
    왜 로딩 상태를 따로 추가해서 관리하면 해결되는걸까요?
  • 현재 베스트 상품, 전체 상품, 상품 상세 이렇게 3개의 컴포넌트에서 각각 상품 데이터를 요청해서 가져오는데 이런식으로 작성해도 괜찮을까요?
  • 서버에 데이터를 요청해서 가져온후에 그 데이터를 다루는게 아직 많이 어려운것 같습니다

@dang-96 dang-96 requested a review from jyh0521 July 5, 2024 13:16
@dang-96 dang-96 added the 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. label Jul 5, 2024
Copy link
Collaborator

@jyh0521 jyh0521 left a comment

Choose a reason for hiding this comment

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

과제하느라 고생하셨습니다! 👍

pageSize = 20,
order = "recent",
}) {
const apiUrl = process.env.REACT_APP_BASE_URL;
const query = `page=${page}&pageSize=${pageSize}&orderBy=${order}`;
const response = await fetch(`${apiUrl}.vercel.app/products?${query}`);
Copy link
Collaborator

Choose a reason for hiding this comment

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

baseURL은 뒤에 .vercel.app까지 넣어주시면 좋을 것 같아요!

Comment on lines +39 to +51
const validAddItemVal = () => {
// 유효성 검사
if (
formData.name !== "" &&
formData.info !== "" &&
formData.price !== "" &&
formData.tag !== ""
formData.name.trim() !== "" &&
formData.info.trim() !== "" &&
formData.price.trim() !== "" &&
formData.tag.trim() !== ""
) {
return true;
}

return false;
};
Copy link
Collaborator

Choose a reason for hiding this comment

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

이런 로직은

return (formData.name.trim() !== "" &&
      formData.info.trim() !== "" &&
      formData.price.trim() !== "" &&
      formData.tag.trim() !== "")

이런식으로도 작성 가능합니다!

Comment on lines +19 to +20
const RECENT = "recent";
const FAVORITE = "favorite";
Copy link
Collaborator

Choose a reason for hiding this comment

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

변수명을 수정해서 상수로 확실하게 표현해주신점 좋네요!

@@ -20,7 +21,10 @@ function App() {
<Route path="/" element={<Home />} />
<Route path="/Login" element={<Login />} />
Copy link
Collaborator

Choose a reason for hiding this comment

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

path명은 대문자는 잘 사용하지 않습니다. 소문자로만 작성하시는 것을 추천드려요!

Comment on lines +27 to +28
location.pathname.startsWith("/Items") ||
location.pathname.startsWith("/AddItem")
Copy link
Collaborator

Choose a reason for hiding this comment

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

startsWith로 조건 수정해주신점 좋네요!

<AllProduct products={products}></AllProduct>
<BestProduct />
<AllProduct />
<Outlet />
Copy link
Collaborator

Choose a reason for hiding this comment

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

저도 처음 알게됐는데, 잘 활용해주셨네요!

btnClass: "",
});

const productIdFind = (id) => {
Copy link
Collaborator

Choose a reason for hiding this comment

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

이런 경우에 함수명은 동사를 앞으로 가져와서 findProductId 같은 이름도 추천드립니다.

const { list } = await getProducts(1);
setProducts(list);
} catch (error) {
console.log("Error message:", error);
Copy link
Collaborator

Choose a reason for hiding this comment

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

에러를 표시할때, console.error도 활용해보세요!

@jyh0521
Copy link
Collaborator

jyh0521 commented Jul 7, 2024

질문주신 내용들은 다들 고민하실만한 내용들이라 멘토링 시간에 함께 나누면 좋을 것 같습니다!

@jyh0521 jyh0521 merged commit 3a7bc7a into codeit-bootcamp-frontend:React-염정훈 Jul 7, 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