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

React中设置skip为true调用GraphQL查询后为何无法获取数据或错误?

问题原因及解决方法

核心问题1:未解构data变量

你的代码里没有从useQuery的返回值中解构data,所以自然无法访问到查询返回的数据。修改解构语句即可:

import { useQuery } from "@apollo/client";

const { loading, error, data, refetch } = useQuery(GET_CARD_DETAILS, {
  variables: {
    confirmationId,
    name,
  },
  skip: true,
});

核心问题2:忽略refetch的返回值

refetch本身会返回一个Promise,包含本次查询的data和error,你可以直接在调用时获取结果,无需依赖组件状态更新:

const handleFetchData = async () => {
  try {
    const result = await refetch();
    if (result.error) {
      // 处理查询错误
      console.error(result.error);
      return;
    }
    // 直接使用返回的数据
    console.log(result.data);
  } catch (err) {
    // 处理请求异常
    console.error(err);
  }
};

补充说明:skip模式下的初始状态

当skip设为true时,useQuery不会执行初始查询,因此初始的data和error都是undefined。只有调用refetch后,组件重新渲染,这两个变量才会更新。渲染时要处理这种空值情况:

return (
  <div>
    <button onClick={handleFetchData}>Fetch Data</button>
    {loading && <p>加载中...</p>}
    {error && <p>查询出错:{error.message}</p>}
    {data && <pre>{JSON.stringify(data, null, 2)}</pre>}
  </div>
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:07:06