如何在第一个redux钩子完成后调用第二个redux钩子

qfe3c7zg  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(155)

你好!我不会请求,我不知道如何请求信息

const { id } = useParams();
const { data, isLoading } = jsonApi.useFetchStrategyQuery(id);

const { currentData } = catalogApi.useGetFundQuery(data.id)

拥有上述钩子,并询问如何在第2行钩子完成后调用第4行钩子。
无法应用useEffect()😢
第一个挂钩:

export const jsonApi = createApi({
  reducerPath: 'jsonApi',
  baseQuery: fetchBaseQuery({ baseUrl: config.jsonUrl }),
  endpoints: build => ({
    fetchStrategy: build.query<IStrategy, string | number | undefined>({
      query: id => ({
        url: `/static/strategies/${id}.json`,
      }),
    }),
    fetchLegalEntity: build.query<LegalEntity, string>({
      query: name => ({
        url: `/static/legalEntities/${name}.json`,
      }),
    }),
  }),
});

第二钩:

export const catalogApi = createApi({
  reducerPath: 'catalogApi',
  baseQuery: fetchBaseQuery({ baseUrl: config.infoApiUrl }),
  endpoints: build => ({
    getFund: build.query<Catalog[], string | number | undefined>({
      query: id => ({
        url: `/api/Products/${id}`,
      }),
    }),
  }),
});
export const { useGetFundQuery } = catalogApi;
ql3eal8s

ql3eal8s1#

data.id中没有值时,您可以尝试使用skipToken来跳过查询,如下所示:

import { skipToken } from '@reduxjs/toolkit/query/react';
...
const { data, isLoading } = jsonApi.useFetchStrategyQuery(id);
const { currentData } = catalogApi.useGetFundQuery(data?.id ?? skipToken);

上面,如果data?.idundefinednullskipToken将作为一个参数传递,告诉redux跳过查询。一旦您的数据被提取并且data.id被定义,您的查询将重新运行。您可以查看redux工具包文档中的this部分以了解更多关于跳过的信息。

相关问题