From 6095cb54afe3f4fcabbfff26ac6704ecfbbddae5 Mon Sep 17 00:00:00 2001 From: Vben Date: Wed, 10 Mar 2021 23:34:43 +0800 Subject: [PATCH] fix(table): ensure that the height calculation is normal close #349 --- .../Table/src/hooks/useTableScroll.ts | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/components/Table/src/hooks/useTableScroll.ts b/src/components/Table/src/hooks/useTableScroll.ts index d4e5375919b..711986fcc16 100644 --- a/src/components/Table/src/hooks/useTableScroll.ts +++ b/src/components/Table/src/hooks/useTableScroll.ts @@ -23,7 +23,7 @@ export function useTableScroll( const modalFn = useModalContext(); // Greater than animation time 280 - const [debounceRedoHeight] = useDebounce(redoHeight, 200); + const [debounceRedoHeight] = useDebounce(redoHeight, 100); const getCanResize = computed(() => { const { canResize, scroll } = unref(propsRef); @@ -41,11 +41,9 @@ export function useTableScroll( ); function redoHeight() { - if (unref(getCanResize)) { - nextTick(() => { - calcTableHeight(); - }); - } + nextTick(() => { + calcTableHeight(); + }); } function setHeight(heigh: number) { @@ -63,15 +61,23 @@ export function useTableScroll( const { resizeHeightOffset, pagination, maxHeight } = unref(propsRef); const tableData = unref(getDataSourceRef); - if (!unref(getCanResize) || tableData.length === 0) return; - - await nextTick(); - //Add a delay to get the correct bottomIncludeBody paginationHeight footerHeight headerHeight const table = unref(tableElRef); if (!table) return; const tableEl: Element = table.$el; if (!tableEl) return; + + if (!bodyEl) { + bodyEl = tableEl.querySelector('.ant-table-body'); + } + + bodyEl!.style.height = 'unset'; + + if (!unref(getCanResize) || tableData.length === 0) return; + + await nextTick(); + //Add a delay to get the correct bottomIncludeBody paginationHeight footerHeight headerHeight + const headEl = tableEl.querySelector('.ant-table-thead '); if (!headEl) return; @@ -124,10 +130,6 @@ export function useTableScroll( height = (height > maxHeight! ? (maxHeight as number) : height) ?? height; setHeight(height); - if (!bodyEl) { - bodyEl = tableEl.querySelector('.ant-table-body'); - } - bodyEl!.style.height = `${height}px`; } useWindowSizeFn(calcTableHeight, 280);