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

[Feat] 모각코 리스트 페이지 API 연동 및 리액트 쿼리 사용 #140

Merged
merged 10 commits into from
Nov 22, 2023

Conversation

ttaerrim
Copy link
Member

@ttaerrim ttaerrim commented Nov 22, 2023

설명

  • closed [FEATURE] 모각코 리스트 페이지 구현 #121

  • React Query의 쿼리 키를 다룰 때 편리한 @lukemorales/query-key-factory를 사용했습니다.

    사용하지 않는다면 다음과 같이 상수로 키를 관리할 수 있습니다. [1]

    const mogacoKeys = {
      all: ['mogaco'] as const,
      lists: () => [...mogacoKeys.all, 'list'] as const,
      list: (filters: string) => [...mogacoKeys.lists(), { filters }] as const,
      details: () => [...mogacoKeys.all, 'detail'] as const,
      detail: (id: number) => [...mogacoKeys.details(), id] as const,
    }

    query-key-factory 라이브러리는 유사한 형식으로 키를 생성해 주고, 이를 queryFn과도 연결하여 사용할 수 있어 편리합니다.

    import { createQueryKeys } from '@lukemorales/query-key-factory';
    
    import { mogaco } from '@/services';
    
    export const mogacoKeys = createQueryKeys('mogaco', {
      list: (filters?: { filters: { page: number } }) => ({
        queryKey: [{ filters }],
        queryFn: () => mogaco.list(),
      }),
      detail: (id: string) => [id],
    });

    사용하는 부분에서는 다음과 같이 간단하게 사용하면 됩니다.

    const { data: mogacoList } = useQuery(queryKeys.mogaco.list());
  • msw 사용 시 axios에서 설정한 baseURL을 사용하지 않기 위해 개발 환경에서는 지정하지 않도록 코드를 수정했습니다.

    baseURL: import.meta.env.DEV ? '' : import.meta.env.VITE_API_URL,
    

완료한 기능 명세

  • 모각코 리스트 페이지 API 연결

스크린샷

기능 작업에 대한 스크린샷/화면 녹화 있을 경우 첨부하기

스크린샷 2023-11-22 17 23 13

리뷰 요청 사항

특별히 리뷰해 주었으면 하는 부분, 고민되는 부분 기재하기

참고

  1. React Query Key 관리 | 지나가던 개발(zigae)

Comment on lines +15 to +40
mogacoList.map(
({
id,
memberId,
groupId,
title,
contents,
date,
participantList,
maxHumanCount,
address,
status,
}) => (
<MogacoItem
key={id}
id={id}
memberId={memberId}
title={title}
groupId={groupId}
contents={contents}
participantList={participantList}
maxHumanCount={maxHumanCount}
address={address}
date={date}
status={status}
/>
Copy link
Member Author

Choose a reason for hiding this comment

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

길긴 하네요..~

@ttaerrim ttaerrim marked this pull request as ready for review November 22, 2023 08:23
import { mogaco } from '@/services';

export const mogacoKeys = createQueryKeys('mogaco', {
list: (filters?: { filters: { page: number } }) => ({
Copy link
Collaborator

Choose a reason for hiding this comment

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

혹시 이 부분(filters, page)도 리액트 쿼리 문법인가요..?
아니면 그냥 모각코 게시글 리스트를 필터링해서 가져오기 위한 매개변수일까요?

Copy link
Member Author

Choose a reason for hiding this comment

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

쿼리 키 팩토리를 사용하면 list: () => {}로 사용을 못하고 무조건 매개변수를 전달해 주도록 해야 하더라고요?
그리고 아마 저희가 페이지네이션 사용하게 되면 /mogaco?offset=1&limit=10 처럼 쿼리 스트링을 전달해 주게 될 거예요. 그런 offset, limit 같은 것이 filters에 담기는 객체 정보가 될 거고, 그걸 쿼리 키로 함께 사용하게 될 거예요!

Copy link
Collaborator

@js43o js43o Nov 22, 2023

Choose a reason for hiding this comment

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

아하 팩토리 문법이군요 감사합니다! 공부해보겠습니다.

Copy link
Member Author

Choose a reason for hiding this comment

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

넵 저도 처음 써 봐서요!! 혹시 매개변수 없이 작성할 수 있는 방법 아시게 된다면 공유 부탁드립니다!!

@@ -1,6 +1,6 @@
import axios from 'axios';

export const morakAPI = axios.create({
baseURL: import.meta.env.VITE_API_URL,
baseURL: import.meta.env.DEV ? '' : import.meta.env.VITE_API_URL,
Copy link
Collaborator

Choose a reason for hiding this comment

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

이 부분 보고 바로 반영해서 사용하고 있습니다..!😊

Copy link
Member Author

Choose a reason for hiding this comment

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

굿굿~~~

Copy link
Collaborator

@LEEJW1953 LEEJW1953 left a comment

Choose a reason for hiding this comment

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

pr과 코드 읽어보면서 react query 사용법을 배워보겠습니다 🙌

@ttaerrim ttaerrim merged commit 5851132 into boostcampwm2023:develop Nov 22, 2023
1 check passed
@ttaerrim ttaerrim deleted the mogaco-api branch November 22, 2023 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEATURE] 모각코 리스트 페이지 구현
3 participants