-
Notifications
You must be signed in to change notification settings - Fork 31
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
[임찬빈] sprint5 #135
The head ref may contain hidden characters: "react-\uC784\uCC2C\uBE48-sprint5"
[임찬빈] sprint5 #135
Conversation
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.
요구사항을 충족하느라 고생 많으셨습니다!
- 레이아웃의 경우 다 잘 작성하셨는데 미디어 쿼리만 잘 적용하시면 충분히 하실 수 있을 것 같습니다!
- 페이지네이선 부분은 컴포넌트로 분리하는 것도 잘 고려해 보시면 좋을 것 같아요!
- chatGPT 사용 문제 없습니다! 잘 쓰는 법을 익히시면 러닝커브를 올리는데 큰 도움이 됩니다!
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.
리액트 프로젝트 root(최상위)에 위치하는게 좋습니다! panda market
폴더 하위가 아닌 6-sprint-mission-fe
하위로 이동시켜 보시는건 어떨까요?
<div className="navAll"> | ||
<div className="nav-left"> |
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.
클래스 네이밍 컨벤션 통일시켜 주시면 좋을 것 같습니다!
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.
요구사항은 잘 작성되어 있으니 미디어 쿼리 적용만 적용하면 사이즈별 레이아웃 처리를 할 수 있을 것 같습니다!
/* 예시 */
/* 태블릿 뷰 (1024px 이하) */
@media (max-width: 1024px) {
.best-products {
grid-template-columns: repeat(2, 1fr);
}
.product-grid {
grid-template-columns: repeat(3, 1fr);
}
.best-card, .best-card img {
width: 100%;
height: auto;
}
.product-card, .product-card img {
width: 100%;
height: auto;
}
.product-card img {
aspect-ratio: 1/1;
}
}
); | ||
}; | ||
|
||
export default ProductsPage; |
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.
전반적으로 잘 구현해 주셨지만 다음에는 컴포넌트를 기능별로 조금 더 잘게 나누어 보시면 어떨까요?
// 예시
// ProductCard.jsx 분리
const ProductCard = ({ product, isBest }) => (
<div className={`product-card ${isBest ? 'best-card' : ''}`}>
{product.images?.length > 0 && (
<img src={product.images[0]} alt={product.name} />
)}
<div className="product-info">
<h3>{product.name}</h3>
<p className="product-price">{product.price}원</p>
<div className="product-likes">♡ {product.likes}</div>
</div>
</div>
);
const [page, setPage] = useState(1); | ||
const [sort, setSort] = useState("createdAt"); | ||
const [search, setSearch] = useState(""); | ||
const [loading, setLoading] = useState(false); |
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.
load이 설정되어 있으나 유저에게 직접 노출되는 부분은 없는 것 같습니다. 아래 예시처럼 로딩 화면을 노출해 보시는건 어떨까요?
{loading ? (
<div className="loading-spinner">로딩 중...</div>
) : (
<div className="product-grid">
{products.map((product) => (
<ProductCard key={product.id} product={product} />
))}
</div>
)}
13d2ebb
into
codeit-sprint-fullstack:react-임찬빈
그리고 PR 내용에 작업 후 작업 내용을 확인할 수 있는 URL 을 첨부해 주시면 더욱 좋을 것 같습니다! |
요구사항
기본 요구사항
공통
Github에 스프린트 미션 PR을 만들어 주세요.
React를 사용해 진행합니다.
중고마켓 페이지
PC, Tablet, Mobile 디자인에 해당하는 중고마켓 페이지를 만들어 주세요.
중고마켓 페이지 url path는 별도로 설정하지 않고, '/'에 보이도록 합니다.
상단 네비게이션 바, 푸터는 랜딩 페이지와 동일한 스타일과 규칙으로 만들어주세요.
상품 데이터는 https://panda-market-api.vercel.app/docs/에 명세된 GET 메소드 "/products" 를 활용해주세요.
베스트 상품 데이터는 https://panda-market-api.vercel.app/docs/에 명세된 GET 메소드 "/products"의 정렬 기준 favorite을 사용해주세요.
심화 요구사항
공통
중고마켓 페이지
주요 변경사항
베스트상품과 판매 중인 상품이 보이는 페이지.
스크린샷
멘토에게