visual-novel-web/src/layouts/GlobalContainer/QueryProvider.tsx

31 lines
790 B
TypeScript
Raw Normal View History

2025-10-28 07:59:26 +00:00
'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>
);
}