IT/React
react-query와 Recoil 통합하기: 세부 설정부터 렌더링까지
Dev. Sean
2023. 9. 21. 10:14
반응형
const queryClient = new QueryClient({
defaultOptions: {
queries: {
refetchOnWindowFocus: false,
retry: 2,
retryDelay: attempt => Math.min(attempt * 1000, 2000),
staleTime: 1000 * 60 * 5,
cacheTime: 1000 * 60 * 60,
},
},
});
- refetchOnWindowFocus: false: 창이 포커스될 때마다 데이터를 다시 가져오는 기능을 비활성화한다.
- retry: 2: 데이터 가져오기 쿼리가 실패할 경우 최대 2번까지 재시도한다.
- retryDelay: attempt => Math.min(attempt * 1000, 2000): 재시도 간격을 설정. 첫 번째 재시도는 1초 후, 두 번째 재시도는 2초 후에 한다.
- staleTime: 1000 * 60 * 5: 데이터를 5분 동안 신선한 상태로 간주한다. 이 시간 이후에는 데이터를 다시 가져올 수 있다.
- cacheTime: 1000 * 60 * 60: 성공적으로 가져온 데이터를 60분 동안 캐시에 유지한다.
root.render(
<ConfigProvider
locale={koKR}
getPopupContainer={(triggerNode) => {
const parentNode = triggerNode?.parentNode;
if (parentNode instanceof HTMLDivElement && parentNode !== document.body) {
return parentNode;
} else {
return document.body;
}
}}
>
<QueryClientProvider client={queryClient}>
<RecoilRoot>
<App />
</RecoilRoot>
</QueryClientProvider>
</ConfigProvider>
);
- <ConfigProvider locale={koKR} ... >: antd (Ant Design) UI 라이브러리의 전역 설정을 제공한다. 여기서는 한국어로 로캘을 설정해준다.
- getPopupContainer={(triggerNode) => { ... }}: 팝업이 표시되는 위치를 결정하는 함수 특정 요소의 부모 노드가 HTMLDivElement이고 문서의 body가 아닐 경우 해당 부모 노드 내에 팝업을 표시하고, 그렇지 않으면 body에 표시함
- <QueryClientProvider client={queryClient}>: react-query의 설정을 React 컴포넌트에 제공합니다. 이 안에 있는 모든 컴포넌트들은 queryClient의 설정을 사용할 수 있습니다.
- <RecoilRoot>: recoil 상태 관리 라이브러리의 루트 컴포넌트. 이 안에 있는 컴포넌트들은 recoil의 상태와 기능을 사용할 수 있다.
반응형