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

如何将UI回调函数传入RTK Query端点的transformResponse

在RTK Query的transformResponse中调用从UI传递的回调函数

要实现从UI组件的useGetPeopleQuery钩子传递回调函数到端点的transformResponse中调用,你可以按照以下步骤操作:

1. 调整端点的参数结构

修改getPeople端点的配置,让它接收包含查询文档和回调函数的对象,同时在transformResponse中通过meta.originalArgs获取传入的回调:

export const api = createApi({
  baseQuery: graphqlRequestBaseQuery({
    // ... 你的baseQuery配置
  }),
  endpoints: (builder) => ({
    getPeople: builder.query({
      // 让query接收包含document和回调的参数对象
      query: ({ document, onTransform }) => ({
        document,
      }),
      transformResponse: (response, meta) => {
        // 从meta中取出调用hook时传入的原始参数
        const { onTransform } = meta.originalArgs;
        // 确认是函数后再调用,避免报错
        if (typeof onTransform === 'function') {
          onTransform(response);
        }
        // 返回响应数据(如需修改响应,可在此处处理后返回)
        return response;
      },
    }),
  }),
});

2. 在UI组件中传递回调

调用useGetPeopleQuery时,传入包含查询文档和回调函数的对象:

// 定义你需要在转换响应时执行的回调
const handleTransform = (response) => {
  console.log('响应已完成转换:', response);
  // 这里可以添加自定义逻辑,比如状态更新、数据预处理等
};

// 调用hook时传入参数对象
const { data: people, isLoading: isLoadingPeople } = useGetPeopleQuery({
  document: people, // 你的原查询文档参数
  onTransform: handleTransform
});

核心说明

  • transformResponse的第二个参数meta包含originalArgs字段,存储了调用useGetPeopleQuery时传入的所有参数,通过它就能拿到UI层传递的回调函数。
  • 一定要先判断回调是否为函数类型,避免出现调用非函数的运行时错误。
  • 如果需要在转换后再把处理过的数据传给回调,只需要在调用onTransform时传入处理后的结果即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:24:28