-
Notifications
You must be signed in to change notification settings - Fork 35
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 #157
The head ref may contain hidden characters: "React-\uC870\uADDC\uC9C4-sprint5"
[조규진] Sprint5 #157
Conversation
…ithub-actions [Fix] delete merged branch github action
…조규진-sprint1 [조규진]Sprint1
…조규진-sprint2 [조규진]Sprint2
…nd/8-Sprint-Mission into Basic-조규진-sprint3
…조규진-sprint3 [조규진] Sprint3
…-조규진-sprint4 [조규진]Sprint4
…nd/8-Sprint-Mission into React-조규진-sprint5
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.
수고많으셨습니다!!
마이그레이션이 남아있는 컴포넌트들도 차근차근 해보시면 금방 될꺼에요! 화이팅!!!
|
||
<div className='bestItemsCardSection'> | ||
{itemList?.map((item) => ( | ||
<ItemCard item={item} key={`best-item-${item.id}`} /> |
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.
<ItemCard item={item} key={`best-item-${item.id}`} /> | |
<ItemCard item={item} key={`best-item-${item.id}`} /> |
중복되지 않은 고유한 key로 잘 해주셨습니다!
react에서 map에 사용되는 key는 고유한 값이고, 요소마다 중복되지않으면 됩니다.
하드코딩 되어있는 best-item-
부분은 계속 같은 값이라 영향을 주지않고, item.id만 key값으로 쓰더라도 문제없이 잘 동작합니다. :-)
<img src={item.images[0]} alt={item.name} className='itemCardThumbnail' /> | ||
<div className='itemSummary'> | ||
<h2 className='itemName'>{item.name}</h2> | ||
<p className='itemPrice'>{item.price.toLocaleString()}원</p> |
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.
<p className='itemPrice'>{item.price.toLocaleString()}원</p> | |
<p className='itemPrice'>{item.price.toLocaleString("ko-KR")}원</p> |
꿀팁 공유~
number.toLocaleString에 첫번째 인자로 "ko-KR"을 넘겨주면 천 단위마다 자동으로 콤마를 찍어주는 기능이 있어요!:-)
const fetchSortedData = async ({ orderBy, page, pageSize }) => { | ||
const products = await getProducts({ orderBy, page, pageSize }); | ||
setItemList(products.list); | ||
setTotalPageNum(Math.ceil(products.totalCount / pageSize)); | ||
}; |
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.
지금도 물론 잘해주셨는데,
함수는 하나의 일만 하도록 만들면 좋습니다.
products를 불러오는일,
state를 업데이트 하는일 이렇게 두 함수로 나눠서 관리하면 디버깅하거나 유지보수 하는데에 도움이 됩니다.
//products를 fetching 하는일
const fetchProducts = async ({ orderBy, page, pageSize } => {
return await getProducts({ orderBy, page, pageSize });
};
//state를 업데이트 하는일
const updateItemList = (products) => {
setItemList(products.list);
setTotalPageNum(Math.ceil(products.totalCount / pageSize));
};
useEffect(()=>{
const handleResize = ()=>{}
..
..
생략
//분리된 함수를 정의한 함수
const loadData = async () => {
const products = await fetchProducts({ orderBy, page, pageSize });
updateItemList(products);
};
//useEffect 안에서 실행
loadData();
return ()=>{}
생략
...
},[])
<div className='sortButtonWrapper'> | ||
<button className='sortDropdownTriggerButton' onClick={toggleDropdown}> |
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.
className이나 변수 이름짓는건 항상 어렵죠.. 어느선까지 구체적으로 해야할지 애매모호해서 더 자세하게 붙이다보면 본의아니게 길어지곤 합니다.
저는 이름이 길어지면 일단 의미는 지킬 수 있으면서 줄일 수 있는 단어가 있는지 찾는편이에요.
예를들면
<div className='sortButtonWrapper'> | |
<button className='sortDropdownTriggerButton' onClick={toggleDropdown}> | |
<div className='sortWrapper'> | |
<button className='sortButton' onClick={toggleDropdown}> |
이렇게요 :-)
import { ReactComponent as RightArrow } from '../../../images/icons/arrow_right.svg'; | ||
|
||
const PaginationBar = ({ totalPageNum, activePageNum, onPageChange }) => { | ||
const maxVisiblePages = 5; |
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.
const maxVisiblePages = 5; | |
const MAX_VISIBLE_PAGES = 5; |
잘 해주셨습니다! 어떤 숫자인지 변수로 잘 처리해주셨어요!
이렇게 변하지 않는 값을 의미하는 네이밍 컨벤션은 UPPER_SNAKE_CASE로 보통 이름짓습니다 참고해 주세요~
요구사항
기본
중고마켓
중고마켓 반응형
심화
주요 변경사항
스크린샷
멘토에게