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

控制台输出首页数据显示Undefined问题排查(已解决)

解决Apollo Client无法获取GraphQL查询数据的问题

1. 修复useQuery的解构错误

你的logoassetsQuery部分存在解构错误,错误地将error字段别名成了logoassetsData,导致你拿到的不是查询数据而是错误对象:

// 错误代码
const { loading: logoAssetsLoading, error: logoassetsData } = useQuery(logoassetsQuery);

// 修复后
const { loading: logoAssetsLoading, error: logoassetsError, data: logoassetsData } = useQuery(logoassetsQuery);

同时补充Logo查询的错误处理:

if (logoassetsError) return <p>加载Logo资源失败 :(</p>;

2. 修正查询结果的属性访问与遍历逻辑

(1)属性名拼写错误

你的查询名称是homeLinks,但控制台和组件里多次写成了homeLink(少了末尾的s),导致无法正确访问数据:

// 错误代码
console.log(homeData && homeData?.homeLink?.pages);

// 修复后
console.log(homeData && homeData?.homeLinks?.pages);

(2)数组遍历方法错误

homeData?.homeLinks?.pages是数组,你错误地使用了不存在的page方法,应该用map遍历数组:

// 错误代码
homeData?.homeLinks?.page(link => (/* ... */))

// 修复后
homeData?.homeLinks?.pages.map(link => (
  <li key={link?.id}>
    <Link to={`/${link?.slug}`}>
      <img src={logoassetsData?.logoAssets} alt='main logo'/>
    </Link>
  </li>
))

3. 确认查询结果结构一致性

在Hygraph的GraphQL Playground中执行查询后,确认返回的数据结构是否与代码中的访问路径匹配。正确的返回结构应该类似:

{
  "data": {
    "homeLinks": {
      "pages": [
        { "id": "clbzl7ovpe64d0ak5qh7o2p8f", "slug": "Home", "title": "Home" }
      ]
    }
  }
}

如果结构不符,需要对应调整代码中的属性访问路径。

4. 验证Webpack别名(可选)

若怀疑别名配置问题,可在组件中打印文件路径验证别名是否生效:

console.log(require.resolve("queries/navigation/homeLinks"));

确认输出路径指向src/queries/navigation/homeLinks.js(或对应扩展名)。

内容的提问来源于stack exchange,提问作者Perceptor Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:05:38