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

如何在RTK Query的queryFn中传递参数?

RTK Query queryFn 参数为 undefined 的解决办法

问题根源

你直接把 queryFn 的参数当成了传入的元素ID,但RTK Query给 queryFn 传递的是一个包含 queryKey 的对象,不是直接的参数值,所以才会拿到undefined。

修正代码

1. 调整 queryFn 的参数获取逻辑

把原来直接取参数的方式改成从 queryKey 数组里提取:

// 定义查询的部分
getElement: builder.query({
  queryFn: async ({ queryKey }) => {
    // queryKey 第一个元素是查询名称,第二个是你传入的ID
    const [_, elementId] = queryKey;
    const docRef = doc(db, "elements", elementId);
    const docSnap = await getDoc(docRef);
    
    if (docSnap.exists()) {
      return { data: docSnap.data() };
    } else {
      throw new Error("找不到对应文档");
    }
  },
})

2. 调用逻辑保持不变

调用时直接传入元素ID即可,RTK Query会自动把它加入到 queryKey 中:

// 组件内调用
const { data, error, isLoading } = useGetElementQuery(你的元素ID);

这样就能正确获取到传入的元素ID,从Firebase数据库拿到对应数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:15:33