From bb0a0a8338c276a7b2bd6fe2d6580a1be2c806b3 Mon Sep 17 00:00:00 2001 From: tanem Date: Wed, 30 Dec 2015 12:14:19 +1300 Subject: [PATCH] Add shouldComponentUpdate (closes #13) --- package.json | 2 +- src/Salvager.js | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 77a3a37..6c6b20d 100644 --- a/package.json +++ b/package.json @@ -93,4 +93,4 @@ "clamp": "^1.0.1", "lodash.isfunction": "^3.0.6" } -} \ No newline at end of file +} diff --git a/src/Salvager.js b/src/Salvager.js index 249e202..712c66f 100644 --- a/src/Salvager.js +++ b/src/Salvager.js @@ -11,7 +11,8 @@ export default class Salvager extends Component { bufferStart: 0, isUpdating: false, rowHeight: 0, - rowWrapperTransform: '' + rowWrapperTransform: '', + visibleAreaOffsetHeight: 0 }; } @@ -52,6 +53,13 @@ export default class Salvager extends Component { }); } + shouldComponentUpdate(nextProps, nextState) { + return ( + nextState.bufferStart !== this.state.bufferStart || + nextState.rowHeight !== this.state.rowHeight + ); + } + _buildRows() { let RenderedRow = Row; if (this.props.getRow) RenderedRow = this.props.getRow(); @@ -81,10 +89,6 @@ export default class Salvager extends Component { const bufferMidPoint = Math.floor(midPoint / this.state.rowHeight); let bufferStart = clamp(Math.floor(bufferMidPoint - this.props.bufferSize / 2), 0, this.props.data.length - this.props.bufferSize); - if (bufferStart === this.state.bufferStart) { - return this.setState({ isUpdating: false }); - } - this.setState({ bufferStart, isUpdating: false,