From cbdfce435596d0831448f4493f67b6d0e527fdb4 Mon Sep 17 00:00:00 2001 From: Wei-Wei Wu Date: Fri, 1 Jun 2018 01:56:44 -0700 Subject: [PATCH 1/2] react 15 throws warning if setState `null` --- source/Grid/Grid.js | 55 +++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/source/Grid/Grid.js b/source/Grid/Grid.js index c5524131d..42c559f59 100644 --- a/source/Grid/Grid.js +++ b/source/Grid/Grid.js @@ -459,7 +459,7 @@ class Grid extends React.PureComponent { : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionVertical; - const newState: Object = { + const newState: $Shape = { isScrolling: true, scrollDirectionHorizontal, scrollDirectionVertical, @@ -597,10 +597,10 @@ class Grid extends React.PureComponent { // In that event we need to remeasure. if (!instanceProps.scrollbarSizeMeasured) { this.setState(prevState => { - prevState.instanceProps.scrollbarSize = getScrollbarSize(); - prevState.instanceProps.scrollbarSizeMeasured = true; - prevState.needToResetStyleCache = false; - return prevState; + const stateUpdate = {...prevState, needToResetStyleCache: false}; + stateUpdate.instanceProps.scrollbarSize = getScrollbarSize(); + stateUpdate.instanceProps.scrollbarSizeMeasured = true; + return stateUpdate; }); } @@ -608,18 +608,15 @@ class Grid extends React.PureComponent { (typeof scrollLeft === 'number' && scrollLeft >= 0) || (typeof scrollTop === 'number' && scrollTop >= 0) ) { - this.setState(prevState => { - const stateUpdate = Grid._getScrollToPositionStateUpdate({ - prevState, - scrollLeft, - scrollTop, - }); - if (stateUpdate) { - stateUpdate.needToResetStyleCache = false; - return stateUpdate; - } - return null; + const stateUpdate = Grid._getScrollToPositionStateUpdate({ + prevState: this.state, + scrollLeft, + scrollTop, }); + if (stateUpdate) { + stateUpdate.needToResetStyleCache = false; + this.setState(stateUpdate); + } } // setting the ref's scrollLeft and scrollTop. @@ -1433,19 +1430,17 @@ class Grid extends React.PureComponent { * Useful for animating position changes. */ scrollToPosition({scrollLeft, scrollTop}: ScrollPosition) { - this.setState(prevState => { - const stateUpdate = Grid._getScrollToPositionStateUpdate({ - prevState, - scrollLeft, - scrollTop, - }); - - if (stateUpdate) { - stateUpdate.needToResetStyleCache = false; - return stateUpdate; - } - return null; + const stateUpdate = Grid._getScrollToPositionStateUpdate({ + prevState: this.state, + scrollLeft, + scrollTop, }); + + if (stateUpdate) { + stateUpdate.needToResetStyleCache = false; + this.setState(stateUpdate); + } + return null; } static _wrapSizeGetter(value: CellSize): CellSizeGetter { @@ -1527,8 +1522,8 @@ class Grid extends React.PureComponent { ); if (stateUpdate) { stateUpdate.needToResetStyleCache = false; + this.setState(stateUpdate); } - this.setState(stateUpdate); } static _getCalculatedScrollTop(nextProps: Props, prevState: State) { @@ -1623,8 +1618,8 @@ class Grid extends React.PureComponent { ); if (stateUpdate) { stateUpdate.needToResetStyleCache = false; + this.setState(stateUpdate); } - this.setState(stateUpdate); } _onScroll = (event: Event) => { From 23f3d6610b07099351cd560ce1e7c1976ec7bfdf Mon Sep 17 00:00:00 2001 From: Wei-Wei Wu Date: Fri, 1 Jun 2018 15:49:24 -0700 Subject: [PATCH 2/2] removing extra return null --- source/Grid/Grid.js | 1 - 1 file changed, 1 deletion(-) diff --git a/source/Grid/Grid.js b/source/Grid/Grid.js index 42c559f59..aa0829c19 100644 --- a/source/Grid/Grid.js +++ b/source/Grid/Grid.js @@ -1440,7 +1440,6 @@ class Grid extends React.PureComponent { stateUpdate.needToResetStyleCache = false; this.setState(stateUpdate); } - return null; } static _wrapSizeGetter(value: CellSize): CellSizeGetter {