안녕하세요
리액트 - React Query : ajax 간편하게 자동 요청 본문
React Query 실시간 sns, 코인 거래소와 같은 기능 구현시 유용함
장점
1. ajax 성공/실패에 따른 결과를 렌더링하기 쉽다.
2. 실패한 경우 지정한 시간 후에 재시도 요청을 자동으로 해준다.
3. prefetch 다음 페이지를 미리 요청하여 캐시에 담아두어 곧바로 렌더링 할 수 있도록 한다.
$ 설치
1. 라이브러리 설치
$ npm install react-query
$ npm install react-query
2. index.js에서 QueryClient를 생성하고
const queryClient = new QueryClient();
3. <QueryClientProvider client={queryClient}></QueryClientProvider> 로 감싸기
<QueryClientProvider client={queryClient}>
<Provider store={store}>
<BrowserRouter basename={process.env.PUBLIC_URL}>
<App />
</BrowserRouter>
</Provider>
</QueryClientProvider>
react-query로 데이터 요청하기
const requestResult = useQuery(
"작명",
() =>
return resolve.data;
}),
{ staleTime: 2000 }
);
장점1: 직접 작성하려면 state부터 만들어주어야 하지만 그 과정을 생략해준다.
성공/실패/로딩중 type: boolean
requestResult.data; // 데이터 출력
requestResult.isLoading; // 로딩중일 경우 true
requestResult.error; // 에러가 있을 경우 true
장점2: 자동으로 재요청(refetch)
간격 설정 방법
프로퍼티에 { staleTime: 2000 }
장점3: 실패시 retry를 자동으로 한다. refetch, retry 종료 기능도 물론 있다.
장점4: state를 공유하지 않고 다른 컴포넌트에서 똑같이 요청하더라도 2회를 수행하는 것이 아니라 1회만 수행한다.
장점5: ajax결과 캐싱.
이전에 요청하여 성공한 결과를 먼저 보여줘서 바로 로딩이 되는 느낌을 준다.
그리고 나서 이후 다시 GET요청한 데이터를 다 불러왔을 때 출력해준다.
'스터디 > 코딩애플' 카테고리의 다른 글
리액트 - memo, useMemo : 고비용 함수 처리 (0) | 2022.12.24 |
---|---|
리액트 - Lazy Load : 컴포넌트 로딩 분리하기 (0) | 2022.12.24 |
리액트 - 로컬 스토리지 : 캐시 (0) | 2022.12.23 |
리액트 - Redux Toolkit을 써보자 (0) | 2022.12.21 |
리액트 - route, styled-components특징, lifecycle, useEffect (0) | 2022.12.20 |