You need to enable JavaScript to run this app. React中使用@apollo/react-hooks的useQuery触发TypeError报错
优惠活动
大模型
产品
解决方案
定价
更多

React中使用@apollo/react-hooks的useQuery触发TypeError报错

报错根本原因
  • 触发当前TypeError: Object(...) is not a function的核心问题出在useQuery的导入逻辑上
  • 现有代码采用了默认导入的语法:import useQuery from "@apollo/react-hooks",但useQuery是Apollo客户端模块提供的命名导出,不存在对应的默认导出对象,这种导入方式最终拿到的useQuery变量值为undefined
  • 当代码执行到第8行尝试调用这个undefined值时,就会触发对应类型错误——这也是导入不存在的导出对象时,打包产物最典型的报错表现,完全匹配当前报错的定位位置
  • 其余关联代码(GraphQL查询定义、Pokemon展示组件的导入导出)没有语法问题,不会触发该报错。
修复方案

根据项目当前安装的Apollo客户端版本,选择对应调整方式:

  • 若项目使用的是已废弃的独立@apollo/react-hooks独立包:
    把导入语句从默认导入修改为命名导入:
    // 错误写法(当前代码)
    import useQuery from "@apollo/react-hooks";
    // 正确写法
    import { useQuery } from "@apollo/react-hooks";
    
  • 若项目使用的是官方目前主推的@apollo/client一体化客户端包(不再单独安装@apollo/react-hooks):
    直接调整导入路径和导入方式为:
    import { useQuery } from '@apollo/client';
    

额外校验点:调整完导入逻辑后,需确认根组件已经正确通过ApolloProvider注入了Apollo客户端实例,否则即使导入正确,也会出现查询请求失败的问题,但该场景不会触发当前的类型报错。


内容的提问来源于stack exchange,提问作者BIJITH P N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 12:06:05