0

我正在使用端点queryFn而不是query执行许多请求。有没有办法调用已经定义而不是使用的端点fetchWithBQ
这是一个例子。

export const api = createApi({
  reducerPath: "api",
  baseQuery: fetchBaseQuery({
    baseUrl: "url",
  }),
  endpoints: (builder) => {
    return {
      device: builder.query<Device, string>({
        query: (id) => `devices/${id}`, // repeat 1
      }),
      deployments: builder.query<Deployment[], string>({
        queryFn: async (arg, _api, _extraOptions, fetchWithBQ) => {
            // I would preferred to call the device endpoint directly.
            // It will prevent to repeat the url and get cached data.
          const result = await fetchWithBQ(`devices/${arg}`); // repeat 2
          return ...
        },
      }),
    };
  },
});
4

1 回答 1

4

不,目前这是不可能的,因为它会在整个事情中添加“什么取决于其他内容”的跟踪,并且内部管理会变得非常复杂。

您通常只需使用两个useQuery钩子就可以进行相关查询。当然,对于抽象,您可以将它们组合成一个自定义钩子。

const useMyCustomCombinedQuery = (arg) => {
  const result1 = useMyFirstQuery(arg)
  const result2 = useMySecondQuery(result1.isSuccess ? result1.data.something : skipToken)

  return {result1, result2}
}
于 2021-09-07T15:50:37.880 回答