其他
在 React 项目中集中调试 TanStack…
适用于使用 @tanstack/react-devtools 将 TanStack Query、Router、AI 等调试面板集中到一个可扩展 Devtools 面板的 React 开发场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 40/100 ×0.15
适用场景
在 React 项目中集中调试 TanS特定
解决思路
- 安装 React 包:npm install @tanstack/react-devtools。
- 基础设置:创建 QueryClient,在 App 外层用 QueryClientProvider 包裹,渲染 <TanStackDevtools />,再渲染应用内容 <MyApp />。
- 接入内置 Query Devtools:在 TanStackDevtools 的 plugins 数组中添加 { id: 'react-query', name: 'React Query', render: () => <ReactQueryDevtoolsPanel /> },并确保外层有 QueryClientProvider。
- 接入内置 Router Devtools:在 plugins 数组中添加 { id: 'router', name: 'Router', render: () => <TanStackRouterDevtoolsPanel router={router} /> }。
- 组合 Query 与 Router:在同一个 plugins 数组中同时添加 react-query 与 router 插件。
- 接入 AI Devtools:从 @tanstack/ai-react/devtools 引入 AIDevtoolsPanel,在 plugins 数组中添加 { id: 'ai', name: 'AI', render: () => <AIDevtoolsPanel /> }。
- 使用 AI Devtools 调试 TanStack AI 工作流:查看完整对话历史与元数据、跟踪输入/输出 token 与每次请求成本、实时查看流式 chunks、检查工具调用参数与结果、查看 thinking/reasoning tokens、在开发环境切换适配器/提供方测试。
- 实现插件接口:插件对象必须包含 id: string(唯一标识)、name: string(面板显示名)、render: () => JSX.Element(React 组件)。
- 编写自定义插件:创建如 stateInspectorPlugin(用 <pre>{JSON.stringify(appState, null, 2)}</pre> 展示应用状态)或 networkLoggerPlugin(渲染 <NetworkLoggerPanel />),然后把插件对象放入 TanStackDevtools 的 plugins 数组。
- 动态注册插件:用 useState<DevtoolsPlugin[]>([]) 保存插件,在 useEffect 中根据 process.env.NODE_ENV === 'development' 等条件 push 插件,最后传给 <TanStackDevtools plugins={plugins} />。
- 接入 Vite 插件:在 vite.config.ts 中 import { tanstackDevtools } from '@tanstack/devtools/vite',并在 defineConfig 的 plugins 中加入 tanstackDevtools()。
- 生产环境条件包含:只在 process.env.NODE_ENV === 'development' 时渲染 <TanStackDevtools plugins={plugins} />。
- 生产环境懒加载:使用 lazy(() => import('@tanstack/react-devtools').then((m) => ({ default: m.TanStackDevtools }))) 按需加载 Devtools。
- 最佳实践:在生产环境有条件地包含 Devtools,使用环境检查或 code splitting。
- 最佳实践:只使用具体需要的插件,而不是加载所有可用插件。
- 最佳实践:给每个插件唯一 ID,防止冲突。
- 最佳实践:保持插件 render 函数轻量,避免昂贵计算。
- 最佳实践:在 Vite 项目中使用 Vite 插件自动设置。
- 最佳实践:组合 Query + Router + AI 插件进行全栈 TanStack 调试。
- 最佳实践:为应用级状态检查创建领域特定插件。
- 最佳实践:调试流式、工具调用或 token 用量时使用 AI devtools。
- 框架支持:React 使用 @tanstack/react-devtools(Alpha);Solid 使用 @tanstack/solid-devtools(Planned),Vue 使用 @tanstack/vue-devtools(Planned),Angular 使用 @tanstack/angular-devtools(Planned)。
- 利用核心特性:统一面板统一所有 TanStack 调试、实时更新监控状态变化、插件架构支持自定义/第三方插件、内置 Query/Router/AI 面板、基于 Solid.js 轻量、插件定义有完整 TypeScript 类型安全、框架无关 core。
适用边界 · 注意事项
- 非 React 项目或不使用 TanStack Query/Router/AI 时:当前 React 包为 Alpha,Solid/Vue/Angular 仅 Planned;没有对应集成或调试需求时不必引入。
- 生产环境不要无条件打包 Devtools:应使用环境判断、懒加载或 tree-shaking,否则会增大包体积。
- 避免重复 plugin id、插件 render 过重,以及使用 Query 插件时忘记 QueryClientProvider、Router 插件时忘记传 router 实例。