Redux와 MobX와 같은 라이브러리 이다 하지만 엄청 쉽다
서버 상태 가져오기
, 캐싱
, 동기화 및 업데이트
를 보다 쉽게 다룰 수 있도록 도와주는 라이브러리이다. 클라이언트 상태와 서버 상태를 명확히 구분하기 위해 만들어졌다.redux
, mobX
가 클라이언트 상태 작업
에 적합하지만, 비동기 또는 서버 상태 작업
에는 그다지 좋지 않다고 언급한다.기능
const getSuperHero = useCallback(() => {
return axios.get("<http://localhost:4000/superheroes>");
}, []);
const { data, isLoading } = useQuery(["super-heroes"], getSuperHero);
• useQuery는 기본적으로 3개의 인자를 받습니다. 첫 번째 인자가 queryKey(필수)
, 두 번째 인자가 queryFn(필수)
, 세 번째 인자가 options
입니다.
const fetchSuperHero = ({ queryKey }: any) => {
const heroId = queryKey[1]; // queryKey: (2) ['super-hero', '3']
return axios.get(`http://localhost:4000/superheroes/${heroId}`);
};
const useSuperHeroData = (heroId: string) => {
// 해당 쿼리는 heroId에 의존
return useQuery(["super-hero", heroId], fetchSuperHero);
};
queryKey
를 기반으로 데이터 캐싱
을 관리합니다.