프론트엔드 개발자가 될거야./react

[react-query] 어드민 페이지 조회기능 react-query 도입하기

정니정은니 2023. 1. 24. 17:37

혼자 간단한 어드민 페이지를 개발하는 업무를 맡고 있는데 그래서 기술스택도 자유롭게 도입해보고 있다.

페이지네이션, 조회기능을 구현하며 react-query를 도입했는데 너무 놀라운 기술이라 쓰면서 감탄했다...

react-query 적용전

처음에는 useState,  useEffect, axios, onClick 이벤트로 구현했다.

나름 각 메뉴가 한 컴포넌트에서 조회기능을 수행할 수 있게 공유하여 useState도 객체화하여 최대한 좋은 코드를 만드려고 노력했었다.

- 페이지마다의 useState를 설정해주고

  const [tableData, setTableData] = useState({
    clientReport: {
      table: [],
      totalPage: 0,
      totalCount: 0,
    },
    bridgeReport: {
      table: [],
      totalPage: 0,
      totalCount: 0,
    },
    commentReport: {
      table: [],
      totalPage: 0,
      totalCount: 0,
    },
    inquiry: {
      table: [],
      totalPage: 0,
      totalCount: 0,
    },
    FAQ: {
      table: [],
      totalPage: 0,
      totalCount: 0,
    },
    announce: {
      table: [],
      totalPage: 0,
      totalCount: 0,
    },
  });

- useEffect로 초기 테이블을 그려줬다.

  useEffect(() => {
    (async () => {
      const { data } = await axios.get(`api?page=${page[menu]}`);

      setTableData(prev => ({
        [menu]: {
          ...prev[menu],
          table: data.data,
          totalPage: data.totalPage,
          totalCount: data.totalCount,
        },
      }));
    })();
  }, [menu, page]);

- 조건들을 선택 후 Click하면 테이블을 업데이트 시켜줬다.

 const ClickSearchBtn = useCallback(async () => {
    (async () => {
      const { data } = await axios.get(`api?page=${page[menu]}`,
        { params }
      );
      
      setTableData(prev => ({
        [menu]: {
          ...prev[menu],
          table: data.data,
          totalPage: data.totalPage,
          totalCount: data.totalCount,
        },
      }));
    })();
  }, [menu, page, params]);

그런데도 정말 길고 복잡했다.

react-query 적용후

 const { data, isLoading, isError, error, refetch } = useQuery(
    ['clientSearch', page[menu]],
    async () => await axios.get(`api?page=${page[menu]}`)
  );

한줄로 끝났다....

useState, useEffect가 필요없다.

조건들을 선택 후 Click하는 것도 검색버튼에 onClick이벤트로 refetch해주면 끝이다.

<SearchButton onClick={() => refetch()}>
  검색
</Style.SearchButton>

하루가 다르게 프론트엔드의 기술은 발전한다.

도태되지 않으려면 프론트엔드 개발자는 기술 트렌드에 꾸준히 관심을 가지고 있어야한다고 생각한다.

그래서 나도 새 기술을 공부하는데 두려움을 가지지 않고 시도해서 도입하려 노력하고 있다.

 

react-query를 익히기 위해 공식문서, 여러 블로그, 유튜브 등을 적극적으로 참고했다.

노션에 정리해 놓았던 블로그 링크들이다.

 

앞으로도 이렇게 꾸준히 발전하는 프론트엔드 개발자가 되고싶다 : )

이 글들 덕분에 알게된 React-Query도 정리해서 대한 블로깅 해야겠다 ㅎㅎ