Post

리팩토링 일지: API fetch 함수를 선언적으로 작성하기

리팩토링 일지: API fetch 함수를 선언적으로 작성하기

API 함수를 선언적으로 작성하기

사용자의 action에 의존하는 API는 그 action 함수 내부에서 fetch 되도록 리팩토링하였다.


왜 API fetch 함수의 위치를 변경했는가?

내가 담당한 목적지 리스트 페이지는 클릭과 같은 사용자의 행위(action)에 의존하여 업데이트되는 데이터가 많다. 실제로 내가 사용한 API 11개 중 6개가 클릭 이벤트가 발생했을 때 서버로 데이터를 요청하고 있다.

그러나 나는 API fetch 함수를 컴포넌트 내부에 독립적으로 선언하고 useEffect로 호출하도록 코드를 작성했다. 아래의 코드는 검색 키워드와 사용자가 선택한 카테고리로 검색 결과를 요청하는 API를 fetch한 것이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// API fetch 함수 선언
  const getCategorizedSearchingData = useCallback(async () => {
    const res = await getDestinationListByTitleAndCategoryId(
      selectedCategory,
      searchQueryParam
    );
    const totalData = res.data.total_count;

    ...

  }, [
    selectedCategory,
    searchQueryParam,
    setFilteredDestinations,
    isUserSearched
  ]);


// API fetch 함수 호출
  useEffect(() => {
    getCategorizedSearchingData();
  }, [getCategorizedSearchingData]);


따라서 이 action 함수에서 직접 fetch를 담당하도록 하여 유지보수가 쉽고 함수의 영향범위를 파악하기 편하도록 수정하였다.

 As IsTo Be
fetch 함수 위치컴포넌트 내부에 일반 함수로 선언사용자 action 함수의 내부에 선언
결과(기대 효과)fetch 하여 받아온 데이터를
어디에서 다루고 있는지 쉽게 파악하기 어려움
함수의 영향범위와 코드의 흐름을
파악하기 쉽다.
This post is licensed under CC BY 4.0 by the author.