Skip to content

Commit fb68696

Browse files
authored
No setState(null) (bvaughn#1129)
* react 15 throws warning if setState `null` * removing extra return null
1 parent 5878125 commit fb68696

File tree

1 file changed

+24
-30
lines changed

1 file changed

+24
-30
lines changed

source/Grid/Grid.js

+24-30
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ class Grid extends React.PureComponent<Props, State> {
459459
: SCROLL_DIRECTION_BACKWARD
460460
: this.state.scrollDirectionVertical;
461461

462-
const newState: Object = {
462+
const newState: $Shape<State> = {
463463
isScrolling: true,
464464
scrollDirectionHorizontal,
465465
scrollDirectionVertical,
@@ -597,29 +597,26 @@ class Grid extends React.PureComponent<Props, State> {
597597
// In that event we need to remeasure.
598598
if (!instanceProps.scrollbarSizeMeasured) {
599599
this.setState(prevState => {
600-
prevState.instanceProps.scrollbarSize = getScrollbarSize();
601-
prevState.instanceProps.scrollbarSizeMeasured = true;
602-
prevState.needToResetStyleCache = false;
603-
return prevState;
600+
const stateUpdate = {...prevState, needToResetStyleCache: false};
601+
stateUpdate.instanceProps.scrollbarSize = getScrollbarSize();
602+
stateUpdate.instanceProps.scrollbarSizeMeasured = true;
603+
return stateUpdate;
604604
});
605605
}
606606

607607
if (
608608
(typeof scrollLeft === 'number' && scrollLeft >= 0) ||
609609
(typeof scrollTop === 'number' && scrollTop >= 0)
610610
) {
611-
this.setState(prevState => {
612-
const stateUpdate = Grid._getScrollToPositionStateUpdate({
613-
prevState,
614-
scrollLeft,
615-
scrollTop,
616-
});
617-
if (stateUpdate) {
618-
stateUpdate.needToResetStyleCache = false;
619-
return stateUpdate;
620-
}
621-
return null;
611+
const stateUpdate = Grid._getScrollToPositionStateUpdate({
612+
prevState: this.state,
613+
scrollLeft,
614+
scrollTop,
622615
});
616+
if (stateUpdate) {
617+
stateUpdate.needToResetStyleCache = false;
618+
this.setState(stateUpdate);
619+
}
623620
}
624621

625622
// refs don't work in `react-test-renderer`
@@ -1436,19 +1433,16 @@ class Grid extends React.PureComponent<Props, State> {
14361433
* Useful for animating position changes.
14371434
*/
14381435
scrollToPosition({scrollLeft, scrollTop}: ScrollPosition) {
1439-
this.setState(prevState => {
1440-
const stateUpdate = Grid._getScrollToPositionStateUpdate({
1441-
prevState,
1442-
scrollLeft,
1443-
scrollTop,
1444-
});
1445-
1446-
if (stateUpdate) {
1447-
stateUpdate.needToResetStyleCache = false;
1448-
return stateUpdate;
1449-
}
1450-
return null;
1436+
const stateUpdate = Grid._getScrollToPositionStateUpdate({
1437+
prevState: this.state,
1438+
scrollLeft,
1439+
scrollTop,
14511440
});
1441+
1442+
if (stateUpdate) {
1443+
stateUpdate.needToResetStyleCache = false;
1444+
this.setState(stateUpdate);
1445+
}
14521446
}
14531447

14541448
static _wrapSizeGetter(value: CellSize): CellSizeGetter {
@@ -1530,8 +1524,8 @@ class Grid extends React.PureComponent<Props, State> {
15301524
);
15311525
if (stateUpdate) {
15321526
stateUpdate.needToResetStyleCache = false;
1527+
this.setState(stateUpdate);
15331528
}
1534-
this.setState(stateUpdate);
15351529
}
15361530

15371531
static _getCalculatedScrollTop(nextProps: Props, prevState: State) {
@@ -1626,8 +1620,8 @@ class Grid extends React.PureComponent<Props, State> {
16261620
);
16271621
if (stateUpdate) {
16281622
stateUpdate.needToResetStyleCache = false;
1623+
this.setState(stateUpdate);
16291624
}
1630-
this.setState(stateUpdate);
16311625
}
16321626

16331627
_onScroll = (event: Event) => {

0 commit comments

Comments
 (0)