File tree Expand file tree Collapse file tree 3 files changed +21
-8
lines changed
Expand file tree Collapse file tree 3 files changed +21
-8
lines changed Original file line number Diff line number Diff line change @@ -42,7 +42,7 @@ export interface CellProps<RecordType extends DefaultRecordType> {
4242 ellipsis ?: CellEllipsisType ;
4343 align ?: AlignType ;
4444
45- shouldCellUpdate ?: ( record : RecordType ) => boolean ;
45+ shouldCellUpdate ?: ( record : RecordType , prevRecord : RecordType ) => boolean ;
4646
4747 // Fixed
4848 fixLeft ?: number | false ;
@@ -207,9 +207,9 @@ function Cell<RecordType extends DefaultRecordType>(
207207const RefCell = React . forwardRef < any , CellProps < any > > ( Cell ) ;
208208RefCell . displayName = 'Cell' ;
209209
210- const MemoCell = React . memo ( RefCell , ( _ , next : CellProps < any > ) => {
210+ const MemoCell = React . memo ( RefCell , ( prev : CellProps < any > , next : CellProps < any > ) => {
211211 if ( next . shouldCellUpdate ) {
212- return ! next . shouldCellUpdate ( next . record ) ;
212+ return ! next . shouldCellUpdate ( next . record , prev . record ) ;
213213 }
214214
215215 return false ;
Original file line number Diff line number Diff line change @@ -81,7 +81,7 @@ export interface ColumnType<RecordType> extends ColumnSharedType<RecordType> {
8181 record : RecordType ,
8282 index : number ,
8383 ) => React . ReactNode | RenderedCell < RecordType > ;
84- shouldCellUpdate ?: ( record : RecordType ) => boolean ;
84+ shouldCellUpdate ?: ( record : RecordType , prevRecord : RecordType ) => boolean ;
8585 rowSpan ?: number ;
8686 width ?: number | string ;
8787 onCell ?: GetComponentProps < RecordType > ;
Original file line number Diff line number Diff line change @@ -965,18 +965,24 @@ describe('Table.Basic', () => {
965965 const record = { key : 1 } ;
966966 let shouldUpdate = false ;
967967 let renderTimes = 0 ;
968+ let prev ;
969+ let next ;
968970
969- const Demo = ( ) => {
971+ const Demo = ( { records } ) => {
970972 const [ , forceUpdate ] = React . useState ( { } ) ;
971973
972974 return (
973975 < >
974976 < Table
975- data = { [ record ] }
977+ data = { records }
976978 columns = { [
977979 {
978980 dataIndex : 'key' ,
979- shouldCellUpdate : ( ) => shouldUpdate ,
981+ shouldCellUpdate : ( nextRecord , prevRecord ) => {
982+ next = nextRecord ;
983+ prev = prevRecord ;
984+ return shouldUpdate ;
985+ } ,
980986 render ( ) {
981987 renderTimes += 1 ;
982988 return null ;
@@ -994,7 +1000,7 @@ describe('Table.Basic', () => {
9941000 ) ;
9951001 } ;
9961002
997- const wrapper = mount ( < Demo /> ) ;
1003+ const wrapper = mount ( < Demo records = { [ record ] } /> ) ;
9981004 renderTimes = 0 ;
9991005
10001006 wrapper . find ( 'button' ) . simulate ( 'click' ) ;
@@ -1003,5 +1009,12 @@ describe('Table.Basic', () => {
10031009 shouldUpdate = true ;
10041010 wrapper . find ( 'button' ) . simulate ( 'click' ) ;
10051011 expect ( renderTimes ) . toEqual ( 1 ) ;
1012+
1013+ // Should update match prev & next
1014+ const newRecord = { ...record , next : true } ;
1015+ wrapper . setProps ( { records : [ newRecord ] } ) ;
1016+ // wrapper.update();
1017+ expect ( prev ) . toBe ( record ) ;
1018+ expect ( next ) . toBe ( newRecord ) ;
10061019 } ) ;
10071020} ) ;
You can’t perform that action at this time.
0 commit comments