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

使用React-Query v4调用useQuery时报错Missing queryFn的原因是什么?

React Query报错"Missing queryFn"的原因分析

你在使用React Query时遇到了如下错误:

error = Missing queryFn

相关代码如下:

组件中的React Query调用

const blogQuery = useQuery(['blog'], getBlog(id));

api.js中的API请求函数

export const getBlog = async (id) => {
  try {
    const res = await axios.get(`${API_URL}/blogs/${id}`);
    return res.data;
  } catch (err) {
    throw new Error('An error occurred while fetching Blogs');
  }
};

组件内的错误检查逻辑

blogQuery.error.message
  ? 'error.message = ' + blogQuery.error.message
  : 'error = ' + blogQuery.error

错误原因

React Query的useQuery钩子第二个参数要求传入一个函数(也就是查询函数queryFn),但你现在直接执行了getBlog(id),这会立刻触发异步请求并返回一个Promise对象,而不是传递给React Query一个可执行的函数。

因为React Query没有拿到预期的查询函数,所以抛出了"Missing queryFn"这个错误。

修正方案

把第二个参数改成匿名函数,让React Query在合适的时机自行调用查询逻辑:

// 正确写法:传递函数而非直接执行结果
const blogQuery = useQuery(['blog', id], () => getBlog(id));

另外建议把id加入查询键数组['blog', id],这样当id值变化时,React Query会自动识别并重新发起新的查询,避免缓存数据混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:55:16