본 내용은 Nomad Coders - React JS 마스터클래스 강의를 토대로 작성하였습니다.
1. React Query 사용 예시
useQuery
- Data를 Fetching할 때 사용하는 React Query Hook
- 파라미터는 대표적으로 세 가지
- queryKey: query의 고유 식별자
- Fetcher Function: API를 호출하여 Data를 받아오는 함수, Promise를 return해야 함
- options: 쿼리에 대한 옵션. refetchInterval과 같은 것을 설정 가능
- return하는 값은 대표적으로 두 가지
- isLoading: 로딩 상태를 나타내는 Boolean
- data: Fetching에 성공해서 받아온 data
- useQuery를 사용하면, 기존에 API를 불러오고 상태를 최신화하고 로딩 상태를 구현하기 위한 코드들과 Hook을 대체할 수 있음
- 캐싱을 하여 API 호출을 방지
- refetchInterval를 사용하여 주기적으로 API 호출 가능
- State를 업데이트하고 UI를 새로고침
import { useQuery } from 'react-query';
function mainPage() {
// Fetcher Function 정의부
const fetchingData = () => {
// Promise를 return
return fetch("...api").then(response => response.json());
};
const { isLoading, data } = useQuery("fetchData", fetchingData, {
// 이 쿼리를 5초마다 실행
refetchInterval: 5000,
});
return (<>
<h1>mainPage</h1>
// 로딩이 완료되었을 때 렌더링
{!isLoading && (
<span>{data}</span>
)}
</>)
};
2. Query Key
- Query에 대해 식별하기 위한 key, array로 되어있음
- 모든 Query는 각각 유일한 key를 가져야 함
- useQuey의 첫번째 인자에서 지정할 수 있음
- string or array
const { isLoading, data } = useQuery(["productInfo" , productId], fetchingData);
const { isLoading, data } = useQuery(["buyInfo" , productId], fetchingData);
3. TypeScript와 함께 사용하기
- useQuery Hook을 사용할 때, data로 들어올 인터페이스를 제네릭으로 전달
interface IData {
name: string;
age: number;
paidGoods: string[];
}
const { isLoading, data } = useQuery<IData>("fetchData", fetchingData);
Reference
'programming study > React' 카테고리의 다른 글
Recoil(2) (0) | 2022.07.25 |
---|---|
Recoil(1) (0) | 2022.07.24 |
React Query(1) - 세팅 (0) | 2022.07.22 |
React Router Dom(1) (0) | 2022.07.21 |
React & TypeScript (0) | 2022.07.19 |