-
DevtoolsIT/Tanstack Query V5 2023. 12. 24. 01:41728x90
설치 및 가져오기
npm i @tanstack/react-query-devtools import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
기본적으로 개발환경의 번들에만 포함되기 때문에 production 빌드 중에 제외하는 것에 대한 걱정할 필요 X
Floating Mode
앱에 고정된 플로팅 요소로 마운트하고 화면 모서리에 개발자 도구 표시하고 제거할 수 있는 토글 제공
토글 상태는 다시 로드할 때마다 localStorage에 저장됨
import { ReactQueryDevtools } from '@tanstack/react-query-devtools' function App() { return ( <QueryClientProvider client={queryClient}> {/* The rest of your application */} <ReactQueryDevtools initialIsOpen={false} /> </QueryClientProvider> ) }
옵션
- initialIsOpen: Boolean
- true면 기본적으로 열림
- buttonPosition?: "top-left" | "top-right" | "bottom-left" | "bottom-right"
- react query 로고 위치
- position?: top | bottom | left | right
- react query devtools 패널 위치
- client?: QeuryClient
- 사용자 정의 QueryClient를 사용할 때 사용
- errorType?: { anme: string; initializer: (query: Query) => TError }
- 쿼리에서 발생할 수 있는 일부 오류 미리 정의
- 해당 오류가 UI에서 전환되면 특정 쿼리와 함께 초기화 프로그램 호출
- 오류를 반환해야 함
- styleNonce?: string
- 문서 헤드에 추가된 스타일 태그에 nonce를 전달
- 인라인 스타일을 허용하기 위해 CSP nonce를 사용하는 경우 유용
Devtools in Production
Devtool은 프로덕션 빌드에서 제외된다. 그러나 프로덕션 환경에서는 개발 도구를 지연 로드사는 것이 바람직 할 수 있다.
import * as React from 'react' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { ReactQueryDevtools } from '@tanstack/react-query-devtools' import { Example } from './Example' const queryClient = new QueryClient() const ReactQueryDevtoolsProduction = React.lazy(() => import('@tanstack/react-query-devtools/build/modern/production.js').then( (d) => ({ default: d.ReactQueryDevtools, }), ), ) function App() { const [showDevtools, setShowDevtools] = React.useState(false) React.useEffect(() => { // @ts-ignore window.toggleDevtools = () => setShowDevtools((old) => !old) }, []) return ( <QueryClientProvider client={queryClient}> <Example /> <ReactQueryDevtools initialIsOpen /> {showDevtools && ( <React.Suspense fallback={null}> <ReactQueryDevtoolsProduction /> </React.Suspense> )} </QueryClientProvider> ) } export default App
window.toggleDevtools()를 호출하면 devtools 번들을 다운로드해 표시함
최신 번들러
번들러가 패키지 내보내기를 지원하는 경우 다음 경로 사용 가능
const ReactQueryDevtoolsProduction = React.lazy(() => import('@tanstack/react-query-devtools/production').then((d) => ({ default: d.ReactQueryDevtools, })), )
TypeSctipt의 경우 최소한 v4.7이 필요한 tsconfig에 moduleResolution: "nodenext"를 추가해야 함
728x90'IT > Tanstack Query V5' 카테고리의 다른 글
시작하기 (1) 2023.12.24 - initialIsOpen: Boolean