Commit 877311f9df70b7d76f8a0f8b5082f061de439ec8

Authored by Pom
Committed by GitHub
1 parent de25557f

fix(table): Update useDataSource.ts (#131)

假如数据变少,导致总页数变少并小于当前选中页码,通过getPaginationRef获取到的页码是不正确的,需获取正确的页码再次执行
src/components/Table/src/hooks/useDataSource.ts
@@ -89,10 +89,12 @@ export function useDataSource( @@ -89,10 +89,12 @@ export function useDataSource(
89 loadingRef.value = true; 89 loadingRef.value = true;
90 const { pageField, sizeField, listField, totalField } = fetchSetting || FETCH_SETTING; 90 const { pageField, sizeField, listField, totalField } = fetchSetting || FETCH_SETTING;
91 let pageParams: any = {}; 91 let pageParams: any = {};
  92 +
  93 + const { current, pageSize } = unref(getPaginationRef) as PaginationProps;
  94 +
92 if (isBoolean(getPaginationRef)) { 95 if (isBoolean(getPaginationRef)) {
93 pageParams = {}; 96 pageParams = {};
94 } else { 97 } else {
95 - const { current, pageSize } = unref(getPaginationRef) as PaginationProps;  
96 pageParams[pageField] = (opt && opt.page) || current; 98 pageParams[pageField] = (opt && opt.page) || current;
97 pageParams[sizeField] = pageSize; 99 pageParams[sizeField] = pageSize;
98 } 100 }
@@ -112,6 +114,16 @@ export function useDataSource( @@ -112,6 +114,16 @@ export function useDataSource(
112 const res = await api(params); 114 const res = await api(params);
113 let resultItems: any[] = get(res, listField); 115 let resultItems: any[] = get(res, listField);
114 const resultTotal: number = get(res, totalField); 116 const resultTotal: number = get(res, totalField);
  117 +
  118 + // 假如数据变少,导致总页数变少并小于当前选中页码,通过getPaginationRef获取到的页码是不正确的,需获取正确的页码再次执行
  119 + var currentTotalPage = Math.ceil(resultTotal / pageSize);
  120 + if (current > currentTotalPage) {
  121 + setPagination({
  122 + current: currentTotalPage,
  123 + });
  124 + fetch(opt);
  125 + }
  126 +
115 if (afterFetch && isFunction(afterFetch)) { 127 if (afterFetch && isFunction(afterFetch)) {
116 resultItems = afterFetch(resultItems) || resultItems; 128 resultItems = afterFetch(resultItems) || resultItems;
117 } 129 }