@@ -40,7 +40,7 @@ import Body from './Body';
40
40
import ColGroup from './ColGroup' ;
41
41
import { EXPAND_COLUMN } from './constant' ;
42
42
import TableContext from './context/TableContext' ;
43
- import FixedHolder from './FixedHolder' ;
43
+ import FixedHolder , { FixedHeaderProps } from './FixedHolder' ;
44
44
import Footer , { FooterComponents } from './Footer' ;
45
45
import type { SummaryProps } from './Footer/Summary' ;
46
46
import Summary from './Footer/Summary' ;
@@ -322,7 +322,7 @@ function Table<RecordType extends DefaultRecordType>(tableProps: TableProps<Reco
322
322
useSticky ( sticky , prefixCls ) ;
323
323
324
324
// Footer (Fix footer must fixed header)
325
- const summaryNode = summary ?.( mergedData ) ;
325
+ const summaryNode = React . useMemo ( ( ) => summary ?.( mergedData ) , [ summary , mergedData ] ) ;
326
326
const fixFooter =
327
327
( fixHeader || isSticky ) &&
328
328
React . isValidElement ( summaryNode ) &&
@@ -473,7 +473,26 @@ function Table<RecordType extends DefaultRecordType>(tableProps: TableProps<Reco
473
473
}
474
474
} ) ;
475
475
476
- // ====================== Render ======================
476
+ // ========================================================================
477
+ // == Render ==
478
+ // ========================================================================
479
+ // =================== Render: Func ===================
480
+ const renderFixedHeaderTable = React . useCallback < FixedHeaderProps < RecordType > [ 'children' ] > (
481
+ fixedHolderPassProps => (
482
+ < >
483
+ < Header { ...fixedHolderPassProps } />
484
+ { fixFooter === 'top' && < Footer { ...fixedHolderPassProps } > { summaryNode } </ Footer > }
485
+ </ >
486
+ ) ,
487
+ [ fixFooter , summaryNode ] ,
488
+ ) ;
489
+
490
+ const renderFixedFooterTable = React . useCallback < FixedHeaderProps < RecordType > [ 'children' ] > (
491
+ fixedHolderPassProps => < Footer { ...fixedHolderPassProps } > { summaryNode } </ Footer > ,
492
+ [ summaryNode ] ,
493
+ ) ;
494
+
495
+ // =================== Render: Node ===================
477
496
const TableComponent = getComponent ( [ 'table' ] , 'table' ) ;
478
497
479
498
// Table layout
@@ -629,12 +648,7 @@ function Table<RecordType extends DefaultRecordType>(tableProps: TableProps<Reco
629
648
className = { `${ prefixCls } -header` }
630
649
ref = { scrollHeaderRef }
631
650
>
632
- { fixedHolderPassProps => (
633
- < >
634
- < Header { ...fixedHolderPassProps } />
635
- { fixFooter === 'top' && < Footer { ...fixedHolderPassProps } > { summaryNode } </ Footer > }
636
- </ >
637
- ) }
651
+ { renderFixedHeaderTable }
638
652
</ FixedHolder >
639
653
) }
640
654
@@ -649,7 +663,7 @@ function Table<RecordType extends DefaultRecordType>(tableProps: TableProps<Reco
649
663
className = { `${ prefixCls } -summary` }
650
664
ref = { scrollSummaryRef }
651
665
>
652
- { fixedHolderPassProps => < Footer { ... fixedHolderPassProps } > { summaryNode } </ Footer > }
666
+ { renderFixedFooterTable }
653
667
</ FixedHolder >
654
668
) }
655
669
0 commit comments