使用Apollo Client的useQuery按ID查询数据返回undefined如何解决?
排查方案
- 优先排查请求错误
你当前代码只判断了加载结束,没有捕获接口异常,先修改代码打印错误信息确认问题:
const GETDETAILS = gql` // 先把变量类型改成ID!匹配大部分GraphQL后端的ID字段定义 query abc($id: ID!) { getCategoryProduct(id: $id) { id title description favorited published price_per_day price_per_week price_per_month price_per_weekend picture pictures { id url } createdAt updatedAt } } `; const DetailScreen = () => { const { loading, error, data } = useQuery(GETDETAILS, { variables: { id: "NzI1NDc1MTM1" }, // 临时添加跳过本地缓存,直接请求服务端排除缓存干扰 fetchPolicy: 'network-only' }); useEffect(() => { // 先判断是否有报错 if (error) { console.error("请求报错:", error); return; } if (!loading) { console.log("返回数据:", data); } // 把loading和error也加入依赖数组,避免状态更新不触发回调 }, [loading, error, data]); }
- 检查客户端配置
确认你项目全局配置的Apollo Client请求端点,和你测试用的GraphQL服务端地址完全一致,没有端口、路径配置错误的问题。 - 查看实际网络请求
打开浏览器开发者工具的网络面板,找到该GraphQL请求的响应内容,确认服务端是否真的返回了有效数据,还是服务端本身返回了空值。
内容的提问来源于stack exchange,提问作者rosnk
相关产品推荐
相关产品推荐

