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

[1단계 - 상품 목록] 에프이(박철민) 미션 제출합니다. #7

Merged
merged 39 commits into from
Jun 4, 2024
Merged
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
cdcdd36
chore: emotion 설치, npm 명령어 수정
llqqssttyy May 28, 2024
0123405
docs: 요구사항 정리 문서
llqqssttyy May 28, 2024
0b06ff9
feat: 장바구니 추가 버튼 컴포넌트 추가
llqqssttyy May 28, 2024
390f5f7
feat: 개별 상품 아이템을 렌더링하는 ProductItem 컴포넌트 추가
llqqssttyy May 28, 2024
e082242
feat: ProductItem을 렌더링하는 ProductList 컴포넌트 추가
llqqssttyy May 28, 2024
713cf28
chore: emotion 및 라우터 설정
llqqssttyy May 28, 2024
2d0e208
feat: Dropdown 컴포넌트 추가
llqqssttyy May 28, 2024
3452019
feat: Header 컴포넌트 추가
llqqssttyy May 28, 2024
cebbd51
feat: 페이지 레이아웃을 잡는 Layout 컴포넌트 추가 및 개발한 컴포넌트 조합
llqqssttyy May 28, 2024
4702459
feat: 제품 정보를 fetch 하고 상태를 관리하는 useProducts 훅 추가
llqqssttyy May 29, 2024
850ee31
test: useProducts 훅 테스트
llqqssttyy May 29, 2024
805be1d
chore: gitignore에 .env 추가
llqqssttyy May 29, 2024
275c38f
refactor: Product 타입에서 description 필드 제거
llqqssttyy May 29, 2024
a8211c2
feat: CartButton에 api 요청 추가
llqqssttyy May 29, 2024
3d3ef37
feat: CartList에 error, loading 상태에 따른 UI 추가
llqqssttyy May 29, 2024
4a159f9
refactor: Dropdown이 defaultContent와 Options(content, value가 담긴 객체)를 받…
llqqssttyy May 29, 2024
15c6024
feat: 컴포넌트 변경사항 App.tsx에 적용
llqqssttyy May 29, 2024
12e907d
chore: 세부 스타일 변경
llqqssttyy May 29, 2024
472f9b6
docs: 기능 요구사항 및 테스트 명세 업데이트
llqqssttyy May 29, 2024
e300302
refactor: 사용하지 않는 컴포넌트 제거
llqqssttyy May 29, 2024
54db5b5
refactor: Dropdown 옵션과 페이지 정보(라우트 경로, 타이틀) 상수화
llqqssttyy May 30, 2024
41b0097
refactor: APIErrorFallbackModal 관련 리팩토링
llqqssttyy May 30, 2024
cf51582
refactor: api 요청 관련 매직 넘버 상수화
llqqssttyy May 30, 2024
b6dce22
refactor: 쿼리 파라미터 스트링을 만들어 반환하는 generateQueryParams 유틸 함수 생성 후 적용
llqqssttyy May 30, 2024
f718fc5
refactor: 데이터 fetch 로직과 loading, error 상태를 useFetch 훅으로 추상화
llqqssttyy May 30, 2024
1bc95dd
chore: 불필요한 주석 제거
llqqssttyy May 30, 2024
1ad8564
chore: arrows 파일 위치 수정
chysis May 30, 2024
1ef190e
refactor: 마지막 productItem인지 판단하는 로직을 변수로 분리
chysis Jun 2, 2024
746b63f
fix: import 경로 수정
chysis Jun 2, 2024
8312c6d
refactor: early return을 통해 depth 줄이기
chysis Jun 2, 2024
fde90d5
refactor: 장바구니 아이템을 fetch하는 함수의 반환형 명시
chysis Jun 3, 2024
924ba90
refactor: dropdown size 타입명을 default와 full로 수정
chysis Jun 3, 2024
ac02efa
style: hooks 폴더 위치 src 하위로 변경
chysis Jun 4, 2024
c0364ff
refactor: 절대경로 사용
chysis Jun 4, 2024
3cd1078
refactor: 테스트 description에 구체적인 상황과 결과를 명시
chysis Jun 4, 2024
1558cae
refactor: 불필요한 useCallback 구문 제거
chysis Jun 4, 2024
401ab54
refactor: prop 받는 형태를 바꾸어 코드 간소화
chysis Jun 4, 2024
9a720a8
refactor: font 관련 속성(size, weight) theme에서 관리하도록 수정
chysis Jun 4, 2024
f123b4f
refactor: context의 값이 없는 경우 사용할 default value 추가
chysis Jun 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 6 additions & 13 deletions src/components/hooks/useProducts.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import { useCallback, useEffect, useState } from 'react';
import { PRODUCTS_ENDPOINT } from '../../api/endpoints';
import {
INITIAL_PAGING_SIZE,
PAGING_SIZE,
START_PAGE_NUMBER,
} from '../../constants/api';
import { INITIAL_PAGING_SIZE, PAGING_SIZE, START_PAGE_NUMBER } from '../../constants/api';
import useFetch from './useFetch';
import { Product } from '../../types';

Expand Down Expand Up @@ -49,9 +45,7 @@ export default function useProducts(): UseProductsResult {
const { last, content } = response;

setIsLastPage(last);
setProducts((prevProducts) =>
page === START_PAGE_NUMBER ? content : [...prevProducts, ...content]
);
setProducts((prevProducts) => (page === START_PAGE_NUMBER ? content : [...prevProducts, ...content]));
});
}, [page, sort, category]);

Expand All @@ -68,11 +62,10 @@ export default function useProducts(): UseProductsResult {
}, [category, sort]);

const fetchNextPage = () => {
if (!isLastPage) {
if (page === START_PAGE_NUMBER)
setPage(page + INITIAL_PAGING_SIZE / PAGING_SIZE);
else setPage(page + 1);
}
if (isLastPage) return;

if (page === START_PAGE_NUMBER) setPage(page + INITIAL_PAGING_SIZE / PAGING_SIZE);
else setPage(page + 1);
Copy link

Choose a reason for hiding this comment

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

한결 보기 좋네요 ㅎㅎ 👍

};

return {
Expand Down