31 lines
790 B
TypeScript
31 lines
790 B
TypeScript
|
|
'use client';
|
||
|
|
|
||
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
||
|
|
import { ReactNode, useState } from 'react';
|
||
|
|
|
||
|
|
interface QueryProviderProps {
|
||
|
|
children: ReactNode;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function QueryProvider({ children }: QueryProviderProps) {
|
||
|
|
// 在 Client Component 内部创建 QueryClient 实例
|
||
|
|
// 使用 useState 确保每个请求只创建一次实例
|
||
|
|
const [queryClient] = useState(
|
||
|
|
() =>
|
||
|
|
new QueryClient({
|
||
|
|
defaultOptions: {
|
||
|
|
queries: {
|
||
|
|
// 默认配置:数据在 5 分钟后过期
|
||
|
|
staleTime: 60 * 1000 * 5,
|
||
|
|
// 失败后不自动重试
|
||
|
|
retry: false,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
})
|
||
|
|
);
|
||
|
|
|
||
|
|
return (
|
||
|
|
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
|
||
|
|
);
|
||
|
|
}
|