【发布时间】:2023-02-21 16:48:57
【问题描述】:
我正在尝试根据按钮单击事件从具有不同参数的端点获取 query 数据。
我通过 rtk 查询使用代码拆分方法并将基本服务创建为
import { createApi } from "@reduxjs/toolkit/query/react";
import { axiosBaseQuery } from "./util";
export const appApi = createApi({
baseQuery: axiosBaseQuery({
baseUrl: `https://baseurl`,
}),
refetchOnReconnect: true,
endpoints: () => ({}),
});
并注入端点
import { appApi } from "./appApi";
export const popupAPI = appApi.injectEndpoints({
endpoints: (builder) => ({
getPopupData: builder.query<
any,
{
id: string;
startDate: string | Date | null;
endDate: string | Date | null;
}
>({
query: (params) => {
const { id, startDate, endDate } = params;
return {
url: `kpi/?id=${id}&startdate=${startDate}&enddate=${endDate}`,
};
},
}),
}),
overrideExisting: true,
});
export const { useGetPopupDataQuery } = popupAPI;
在组件文件中,start date 最初设置并在单击按钮时更改。
const startDate = moment()
.subtract(selectedDays || 1, "days")
.format("YYYY-MM-DD");
const endDate = moment()
.subtract(1, "days")
.format("YYYY-MM-DD");
selectedDays 最初设置为 1 并在单击按钮时更改为 2、3 等。我订阅了数据和其他变量,比如
const {
data,
isLoading,
error,
} = useGetPopupDataQuery({
id
startDate: startDate,
endDate: endDate,
});
第一次,当组件挂载 isLoading、data 和 error 的值时,数据获取完成后,isLoading 设置为 false,data 设置数据。但问题是当我单击按钮时,selectedDays 发生了变化,并且发送了一个 API 调用。但是之前的dataisLoadingerror没有改变/重置。所以我无法显示加载/中间阶段。数据获取完成后,检查 data 变量将填充新数据。我正在尝试解决此问题,任何帮助/建议都会非常有帮助。
【问题讨论】:
标签: reactjs typescript redux redux-toolkit rtk-query