fix: cache current list query params

This commit is contained in:
jialin
2026-01-15 16:20:05 +08:00
parent 6445061836
commit 0a9cc1e17a
3 changed files with 27 additions and 8 deletions
+20 -6
View File
@@ -1,6 +1,8 @@
import { WatchEventType } from '@/config'; import { WatchEventType } from '@/config';
import { TABLE_SORT_DIRECTIONS } from '@/config/settings'; import { TABLE_SORT_DIRECTIONS } from '@/config/settings';
import useSetChunkRequest from '@/hooks/use-chunk-request'; import useSetChunkRequest, {
createAxiosToken
} from '@/hooks/use-chunk-request';
import useTableRowSelection from '@/hooks/use-table-row-selection'; import useTableRowSelection from '@/hooks/use-table-row-selection';
import useUpdateChunkedList from '@/hooks/use-update-chunk-list'; import useUpdateChunkedList from '@/hooks/use-update-chunk-list';
import { handleBatchRequest } from '@/utils'; import { handleBatchRequest } from '@/utils';
@@ -60,6 +62,7 @@ export default function useTableFetch<T>(
const modalRef = useRef<any>(null); const modalRef = useRef<any>(null);
const rowSelection = useTableRowSelection(); const rowSelection = useTableRowSelection();
const { sortOrder, handleMultiSortChange } = useTableMultiSort(); const { sortOrder, handleMultiSortChange } = useTableMultiSort();
const axiosTokenRef = useRef<string | null>(null);
// ======= to resolve worker upate issue ======= // ======= to resolve worker upate issue =======
const shouldUpdateRef = useRef(false); const shouldUpdateRef = useRef(false);
@@ -128,7 +131,14 @@ export default function useTableFetch<T>(
const params = { const params = {
..._.pickBy(query || queryParams, (val: any) => !!val) ..._.pickBy(query || queryParams, (val: any) => !!val)
}; };
const res = await fetchAPI(params); currentWatchParamsRef.current = {
query: { ...params }
};
axiosTokenRef.current?.cancel?.();
axiosTokenRef.current = createAxiosToken();
const res = await fetchAPI(params, {
token: axiosTokenRef.current
});
shouldUpdateRef.current = false; shouldUpdateRef.current = false;
loadendRef.current = true; loadendRef.current = true;
if (!dataSource.loadend) { if (!dataSource.loadend) {
@@ -146,7 +156,12 @@ export default function useTableFetch<T>(
...params, ...params,
page: res.pagination.totalPage page: res.pagination.totalPage
}; };
const newRes = await fetchAPI(newParams); currentWatchParamsRef.current = {
query: { ...newParams }
};
const newRes = await fetchAPI(newParams, {
token: axiosTokenRef.current
});
setDataSource({ setDataSource({
dataList: loadmore dataList: loadmore
@@ -227,9 +242,7 @@ export default function useTableFetch<T>(
chunkRequedtRef.current?.current?.cancel?.(); chunkRequedtRef.current?.current?.cancel?.();
try { try {
const currentParams = params || queryParams; const currentParams = params || queryParams;
currentWatchParamsRef.current = {
query: { ...currentParams }
};
const query = _.omit(currentParams, ['page', 'perPage']); const query = _.omit(currentParams, ['page', 'perPage']);
chunkRequedtRef.current = setChunkRequest({ chunkRequedtRef.current = setChunkRequest({
@@ -392,6 +405,7 @@ export default function useTableFetch<T>(
init(); init();
return () => { return () => {
chunkRequedtRef.current?.cancel?.(); chunkRequedtRef.current?.cancel?.();
axiosTokenRef.current?.cancel?.();
cacheDataListRef.current = []; cacheDataListRef.current = [];
}; };
}, []); }, []);
+6 -2
View File
@@ -42,11 +42,15 @@ export async function downloadWorkerPrivateKey({
} }
export async function queryWorkersList<T extends Record<string, any>>( export async function queryWorkersList<T extends Record<string, any>>(
params: Global.SearchParams & T params: Global.SearchParams & T,
options?: {
token: any;
}
) { ) {
return request<Global.PageResponse<ListItem>>(`${WORKERS_API}`, { return request<Global.PageResponse<ListItem>>(`${WORKERS_API}`, {
method: 'GET', method: 'GET',
params params,
cancelToken: options?.token
}); });
} }
@@ -68,6 +68,7 @@ const ModelFiles = () => {
deleteAPI: deleteModelFile, deleteAPI: deleteModelFile,
API: MODEL_FILES_API, API: MODEL_FILES_API,
watch: true, watch: true,
updateManually: true,
contentForDelete: 'resources.modelfiles.modelfile' contentForDelete: 'resources.modelfiles.modelfile'
}); });
const intl = useIntl(); const intl = useIntl();