From bf0c5c43a2e88ea1fa38c8d5f3e8fcedae53f528 Mon Sep 17 00:00:00 2001 From: AllenFang Date: Sun, 24 Feb 2019 15:50:13 +0800 Subject: [PATCH] fix #735 --- packages/react-bootstrap-table2/src/cell.js | 3 ++ .../react-bootstrap-table2/test/cell.test.js | 41 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/packages/react-bootstrap-table2/src/cell.js b/packages/react-bootstrap-table2/src/cell.js index 46b10ea..d09f689 100644 --- a/packages/react-bootstrap-table2/src/cell.js +++ b/packages/react-bootstrap-table2/src/cell.js @@ -23,7 +23,10 @@ class Cell extends eventDelegater(Component) { if (shouldUpdate) return true; + // if (nextProps.formatter) + shouldUpdate = + nextProps.column.formatter ? !_.isEqual(this.props.row, nextProps.row) : false || this.props.column.hidden !== nextProps.column.hidden || this.props.rowIndex !== nextProps.rowIndex || this.props.columnIndex !== nextProps.columnIndex || diff --git a/packages/react-bootstrap-table2/test/cell.test.js b/packages/react-bootstrap-table2/test/cell.test.js index 1187c13..d0ceb95 100644 --- a/packages/react-bootstrap-table2/test/cell.test.js +++ b/packages/react-bootstrap-table2/test/cell.test.js @@ -218,6 +218,47 @@ describe('Cell', () => { }); }); + describe('when props.row is change', () => { + describe('and column.formatter is enable', () => { + const column = { dataField: 'name', text: 'Product Name', formatter: () => 123 }; + beforeEach(() => { + props = { + row, + columnIndex: 1, + rowIndex: 1, + tabIndex: 5, + column + }; + wrapper = shallow( + ); + }); + + it('should return true', () => { + nextProps = { ...props, row: { ...row, alert: 'test' } }; + expect(wrapper.instance().shouldComponentUpdate(nextProps)).toBe(true); + }); + }); + describe('but column.formatter is disable', () => { + const column = { dataField: 'name', text: 'Product Name' }; + beforeEach(() => { + props = { + row, + columnIndex: 1, + rowIndex: 1, + tabIndex: 5, + column + }; + wrapper = shallow( + ); + }); + + it('should return true', () => { + nextProps = { ...props, row: { ...row, alert: 'test' } }; + expect(wrapper.instance().shouldComponentUpdate(nextProps)).toBe(false); + }); + }); + }); + describe('if column.isDummyField is true', () => { describe('when content is change', () => { const column = { dataField: '', text: 'Product Name', isDummyField: true };