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

충남대 FE_박건민 3주차 과제 #120

Open
wants to merge 15 commits into
base: geonbur
Choose a base branch
from

Conversation

geonbur
Copy link

@geonbur geonbur commented Jul 15, 2024

과제 제출합니다.

@geonbur geonbur changed the title 충남대 FE_박건민 3주차 과제 제출합니다. 충남대 FE_박건민 3주차 과제 Jul 15, 2024
@taehwanno taehwanno self-requested a review July 15, 2024 13:11
Copy link

@taehwanno taehwanno left a comment

Choose a reason for hiding this comment

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

리뷰 피드백 드려요!

params: filterOption,
});
return data.products;
};

Choose a reason for hiding this comment

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

지금처럼 프로젝트가 작은 단위일 때는 API 호출 코드는 컴포넌트에 선언해도 괜찮긴한데, 조금만 커져도 하나의 API를 여러 컴포넌트에서 소비할 수 있기에 보통은 컴포넌트 안에서 API 호출 코드를 정의하기 보다는 분리해서 관리하는걸 권장하긴 합니다.

const fetchThemesData = async () => {
const response = await apiClient.get<{ themes: ThemeData[] }>('/themes');
return response.data.themes;
};

Choose a reason for hiding this comment

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

GET /themes API 호출 코드는 아래 2가지를 포함해서 총 3곳에서 중복해서 적용되고 있네요. API 호출 코드는 컴포넌트에서 따로 추출해서 활용한다면 코드 중복을 제거하고 같은 API 호출 코드에서 일관된 타입을 적용할 수 있겠습니다. 해당 API 호출 뿐만 아니라 다른 API 코드도 포함해서 개선해보면 좋을 거 같아요.

  1. https://github.com/geonbur/react-gift-goods-list/blob/ab2b94b1da6d57ea1f7fd40a952ddd9b3c773cfc/src/components/features/Theme/ThemeHeroSection/index.tsx#L14
  2. https://github.com/geonbur/react-gift-goods-list/blob/ab2b94b1da6d57ea1f7fd40a952ddd9b3c773cfc/src/pages/Theme/index.tsx#L13

isLoading: isThemeLoading,
isError: isThemeError,
error,
} = useQuery(['theme', themeKey], () => fetchThemeDetails(themeKey), {

Choose a reason for hiding this comment

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

Suggested change
} = useQuery(['theme', themeKey], () => fetchThemeDetails(themeKey), {
} = useQuery<ThemeData | undefined, AxiosError>(['theme', themeKey], () => fetchThemeDetails(themeKey), {

useQuery에 직접 타입 제공해주면 34번 라인의 as AxiosError 제거할 수 있을 거 같네요. as를 통한 type assertion은 코드를 개선해야하는 신호로 받아들이시는게 좋습니다. TypeScript 컴파일러에 잘못된 정보를 전달할 수 있으니 꼭 필요한 상황이 아니라면 쓰지 않는게 좋아요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants