From 0a9cc1e17ab2ab2c641ae9768d2ecaa2e5c6d717 Mon Sep 17 00:00:00 2001 From: jialin Date: Thu, 15 Jan 2026 16:19:13 +0800 Subject: [PATCH] fix: cache current list query params --- src/hooks/use-table-fetch.ts | 26 ++++++++++++++----- src/pages/resources/apis/index.ts | 8 ++++-- .../resources/components/model-files.tsx | 1 + 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/hooks/use-table-fetch.ts b/src/hooks/use-table-fetch.ts index 5758a34b..bf4b43f4 100644 --- a/src/hooks/use-table-fetch.ts +++ b/src/hooks/use-table-fetch.ts @@ -1,6 +1,8 @@ import { WatchEventType } from '@/config'; 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 useUpdateChunkedList from '@/hooks/use-update-chunk-list'; import { handleBatchRequest } from '@/utils'; @@ -60,6 +62,7 @@ export default function useTableFetch( const modalRef = useRef(null); const rowSelection = useTableRowSelection(); const { sortOrder, handleMultiSortChange } = useTableMultiSort(); + const axiosTokenRef = useRef(null); // ======= to resolve worker upate issue ======= const shouldUpdateRef = useRef(false); @@ -128,7 +131,14 @@ export default function useTableFetch( const params = { ..._.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; loadendRef.current = true; if (!dataSource.loadend) { @@ -146,7 +156,12 @@ export default function useTableFetch( ...params, page: res.pagination.totalPage }; - const newRes = await fetchAPI(newParams); + currentWatchParamsRef.current = { + query: { ...newParams } + }; + const newRes = await fetchAPI(newParams, { + token: axiosTokenRef.current + }); setDataSource({ dataList: loadmore @@ -227,9 +242,7 @@ export default function useTableFetch( chunkRequedtRef.current?.current?.cancel?.(); try { const currentParams = params || queryParams; - currentWatchParamsRef.current = { - query: { ...currentParams } - }; + const query = _.omit(currentParams, ['page', 'perPage']); chunkRequedtRef.current = setChunkRequest({ @@ -392,6 +405,7 @@ export default function useTableFetch( init(); return () => { chunkRequedtRef.current?.cancel?.(); + axiosTokenRef.current?.cancel?.(); cacheDataListRef.current = []; }; }, []); diff --git a/src/pages/resources/apis/index.ts b/src/pages/resources/apis/index.ts index daa0c10a..771e6e1a 100644 --- a/src/pages/resources/apis/index.ts +++ b/src/pages/resources/apis/index.ts @@ -42,11 +42,15 @@ export async function downloadWorkerPrivateKey({ } export async function queryWorkersList>( - params: Global.SearchParams & T + params: Global.SearchParams & T, + options?: { + token: any; + } ) { return request>(`${WORKERS_API}`, { method: 'GET', - params + params, + cancelToken: options?.token }); } diff --git a/src/pages/resources/components/model-files.tsx b/src/pages/resources/components/model-files.tsx index 4d8a96a1..00c11aa8 100644 --- a/src/pages/resources/components/model-files.tsx +++ b/src/pages/resources/components/model-files.tsx @@ -68,6 +68,7 @@ const ModelFiles = () => { deleteAPI: deleteModelFile, API: MODEL_FILES_API, watch: true, + updateManually: true, contentForDelete: 'resources.modelfiles.modelfile' }); const intl = useIntl();