From 2ac4543107135d119e2782bedb2a9f75295d2e97 Mon Sep 17 00:00:00 2001 From: Zhongxian Liang Date: Tue, 11 Aug 2020 15:12:59 +0800 Subject: [PATCH] fix: #26126 use mergedData instead of pageData to decide if render bottom pagination --- components/table/Table.tsx | 2 +- .../table/__tests__/Table.pagination.test.js | 38 ++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/components/table/Table.tsx b/components/table/Table.tsx index 903765027fc2..4d4f9d5e243d 100644 --- a/components/table/Table.tsx +++ b/components/table/Table.tsx @@ -495,7 +495,7 @@ function Table(props: TableProps) { internalRefs={internalRefs as any} transformColumns={transformColumns} /> - {pageData && pageData.length > 0 && bottomPaginationNode} + {mergedData && mergedData.length > 0 && bottomPaginationNode} ); diff --git a/components/table/__tests__/Table.pagination.test.js b/components/table/__tests__/Table.pagination.test.js index 21091d70d922..da85ba5792aa 100644 --- a/components/table/__tests__/Table.pagination.test.js +++ b/components/table/__tests__/Table.pagination.test.js @@ -349,7 +349,7 @@ describe('Table.pagination', () => { const dropdownWrapper = mount(wrapper.find('Trigger').instance().getComponent()); dropdownWrapper.find('.ant-select-item-option').at(2).simulate('click'); - expect(onChange).toBeCalledTimes(1) + expect(onChange).toBeCalledTimes(1); }); it('dynamic warning', () => { @@ -377,4 +377,40 @@ describe('Table.pagination', () => { 'Warning: [antd: Table] `dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.', ); }); + + it('should render pagination after last item on last page being removed with async mode', () => { + const lastPageNum = data.length; + const wrapper = mount( + createTable({ pagination: { pageSize: 1, total: data.length, current: lastPageNum } }), + ); + + const newCol = [ + { + title: 'Name', + dataIndex: 'name', + }, + { + title: 'Action', + dataIndex: 'name', + render(_, record) { + const deleteRow = () => { + const newData = data.filter(d => d.key !== record.key); + wrapper.setProps({ + dataSource: newData, + pagination: { pageSize: 1, total: newData.length, current: lastPageNum }, + }); + }; + return ( + + Delete + + ); + }, + }, + ]; + + wrapper.setProps({ columns: newCol }); + wrapper.find('.btn-delete').simulate('click'); + expect(wrapper.find('.ant-pagination')).toHaveLength(1); + }); });