使用react-query获取数据时出现baseQueue is undefined错误求助
React Query 抛出 'baseQueue is undefined' 错误,相同查询在其他组件正常
以下是几个排查方向和解决办法:
1. 确认组件处于 React Query 上下文范围内
useQuery 必须在 QueryClientProvider 包裹的组件树中使用。虽然其他组件能正常运行,但有可能当前的 GiveOrgAuth 组件被意外放在了 Provider 范围外(比如路由嵌套错误、组件挂载位置不对)。
检查根组件结构,确保 GiveOrgAuth 在 QueryClientProvider 内部:
import { QueryClient, QueryClientProvider } from 'react-query'; const queryClient = new QueryClient(); function App() { return ( <QueryClientProvider client={queryClient}> {/* 所有使用 useQuery 的组件都要放在这里面 */} <GiveOrgAuth /> </QueryClientProvider> ); }
2. 检查 React Query 版本是否存在冲突
如果项目中存在多个版本的 react-query 依赖,可能导致上下文不兼容。运行以下命令检查依赖树:
npm ls react-query
如果发现重复依赖,执行清理:
npm dedupe react-query
或者统一安装指定版本,确保所有组件使用相同版本的 React Query。
3. 修复数据访问的安全判断
虽然你判断了 !isLoading && !isError,但 profile 仍可能处于 undefined 状态(比如查询完成但返回数据为空、缓存异常)。同时注意给 map 循环的元素添加唯一 key:
{!isLoading && !isError && profile?.dataSources ? ( profile.dataSources.map((source) => ( <Badge key={source} color={dataSourceColorMap[source]}>{source}</Badge> )) ) : ( <></> )}
4. 清除异常的查询缓存
如果查询键 profile 的缓存处于异常状态,可能导致后续查询报错。可以尝试清除该查询的缓存:
import { useQueryClient } from 'react-query'; import { useEffect } from 'react'; const GiveOrgAuth = () => { const queryClient = useQueryClient(); // 组件挂载时清除缓存 useEffect(() => { queryClient.invalidateQueries("profile"); }, [queryClient]); const { data: profile, isLoading, isError } = useQuery("profile", fetchProfile); // ... 其余代码 };
内容的提问来源于stack exchange,提问作者PuppetMaster
相关产品推荐
相关产品推荐

