You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PersistQueryClientProvider时的React Query TypeScript类型错误排查

问题:使用PersistQueryClientProvider时出现TypeScript类型错误

错误信息如下:

Type 'QueryClient' is missing the following properties from type 'QueryClient': logger, mountCount, ensureQueryData, getLogger ts(2739)
QueryClientProvider.d.ts(12, 5): The expected type comes from property 'client' which is declared here on type 'IntrinsicAttributes & PersistQueryClientProviderProps'

项目代码:

import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import { AuthProvider } from "./context/AuthContext";
import { BrowserRouter } from "react-router-dom";
import { QueryClient, QueryClientProvider } from "react-query"
import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client'
import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister'

const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      cacheTime: 1000 * 60 * 60 * 24,
    },
  },
})

const persister = createSyncStoragePersister({
  storage: window.localStorage,
})

ReactDOM.render(
  <AuthProvider>
    <BrowserRouter>
      <PersistQueryClientProvider client={queryClient} persistOptions={{ persister }}>
        <App />
      </PersistQueryClientProvider>
    </BrowserRouter>
  </AuthProvider>,
  document.getElementById("root")
);

项目依赖版本:

{
  "name": "template-vite-react-ts-tailwind-v3",
  "version": "0.0.0",
  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "@tanstack/query-sync-storage-persister": "^4.32.0",
    "@tanstack/react-query-persist-client": "^4.32.0",
    "axios": "^1.4.0",
    "framer-motion": "^10.13.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-hook-form": "^7.45.2",
    "react-query": "^3.39.3",
    "react-router": "^6.14.2",
    "react-router-dom": "^6.14.2"
  },
  "devDependencies": {
    "@types/axios": "^0.14.0",
    "@types/react": "^17.0.33",
    "@types/react-dom": "^17.0.10",
    "@types/react-query": "^1.2.9",
    "@types/react-router": "^5.1.20",
    "@vitejs/plugin-react": "^1.0.7",
    "prettier": "^2.5.1",
    "prettier-plugin-tailwindcss": "^0.1.5",
    "typescript": "^4.4.4",
    "vitawind": "^2.2.4",
    "vite": "^2.7.2"
  }
}

错误原因

核心问题是版本不兼容:

  • 你安装的@tanstack/react-query-persist-client和@tanstack/query-sync-storage-persister是v4版本,它们依赖的是@tanstack/react-query(v4版本的react-query已正式更名)。
  • 但项目中实际安装的是旧版react-query(v3.39.3),两者的QueryClient类型定义差异极大,v4版本新增了logger、mountCount等属性,导致TypeScript类型校验失败。

解决方法

步骤1:替换依赖

卸载旧版react-query及对应类型包,安装与persist-client版本匹配的v4版@tanstack/react-query:

# 卸载旧依赖
npm uninstall react-query @types/react-query

# 安装同版本的v4 react-query
npm install @tanstack/react-query@^4.32.0

步骤2:修改代码导入

将原本从react-query导入的模块改为从@tanstack/react-query导入:

// 替换原导入语句
import { QueryClient, QueryClientProvider } from "react-query"
// 改为
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"

步骤3:清理依赖缓存(可选)

如果仍有类型报错,可删除依赖目录和锁文件后重新安装:

rm -rf node_modules package-lock.json
npm install

内容的提问来源于stack exchange,提问作者Bruno Bispo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:49:52