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

Next.js+Tanstack Query+Axios获取数据出现undefined及报错求助

解决Tanstack Query中queryFn获取数据后外部data为undefined的问题

你的问题核心是queryFn函数没有返回数据,这直接导致了控制台报错和外部data为undefined的现象。

看你的代码,queryFn内部虽然成功获取到了数据,但最后没有将数据返回给Tanstack Query,因此Query无法拿到结果,外部解构的data自然就是undefined。

修改后的代码:

const Home = () => {

  const { data, isLoading } = useQuery({
    queryKey: ['products'],
  
    queryFn: async () => {
      const res = await axios.get('https://fakestoreapi.com/products');
      // 关键:返回获取到的数据
      return res.data;
    }
  });

  // 请求未完成时显示加载状态,避免访问undefined的data
  if (isLoading) {
    return <div>加载中...</div>;
  }

  console.log(data); // 请求完成后即可正常获取数据

  return (
    <section>
      {/* 此处可渲染data内容 */}
    </section>
  );
};

原因说明:

  1. Tanstack Query强制要求queryFn必须返回非undefined的值,否则会抛出你看到的Query data cannot be undefined错误。
  2. 你之前的代码中,queryFn仅执行了console.log(data),没有return语句,函数默认返回undefined,导致Query无法获取数据。
  3. 使用普通fetch能正常工作,应该是你当时在fetch回调中正确返回了解析后的数据(比如return response.json()),因此Query能拿到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:53:27