From d1dbf96943562035829873278e64eeb0c42f6cd2 Mon Sep 17 00:00:00 2001 From: gusbueno Date: Tue, 22 Oct 2019 14:18:53 +0200 Subject: [PATCH] better way to use setstate avoiding sideeffects --- client/src/components/Dashboard/index.tsx | 47 ++++++++++++----------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/client/src/components/Dashboard/index.tsx b/client/src/components/Dashboard/index.tsx index 8917c025..422e168b 100644 --- a/client/src/components/Dashboard/index.tsx +++ b/client/src/components/Dashboard/index.tsx @@ -118,7 +118,8 @@ export default class Dashboard extends React.Component ({ + ...state, mounted: true, layouts: { lg: layouts['lg'] }, grid: { @@ -128,7 +129,7 @@ export default class Dashboard extends React.Component ({ ...state, visibilityFlags: state.flags })); } onBreakpointChange(breakpoint: any) { var layouts = this.state.layouts; layouts[breakpoint] = layouts[breakpoint] || this.layouts[breakpoint]; - this.setState({ + this.setState(state => ({ + ...state, currentBreakpoint: breakpoint, layouts: layouts - }); + })); } onLayoutChange(layout: any, layouts: any) { } @@ -162,9 +164,10 @@ export default class Dashboard extends React.Component ({ + ...state, layouts: newLayouts - }); + })); // Saving layout to API let { dashboard } = this.props; @@ -180,19 +183,19 @@ export default class Dashboard extends React.Component ({ ...state, askConfig: true })); } toggleEditMode() { - this.setState({ editMode: !this.state.editMode }); + this.setState(state => ({ ...state, editMode: !this.state.editMode })); } onDeleteDashboard() { - this.setState({ askDelete: true }); + this.setState(state => ({ ...state, askDelete: true })); } onSaveAsTemplate() { - this.setState({ askSaveAsTemplate: true }); + this.setState(state => ({ ...state, askSaveAsTemplate: true })); } onSaveAsTemplateApprove() { @@ -208,19 +211,19 @@ export default class Dashboard extends React.Component ({ ...state, askSaveAsTemplate: false })); } onSaveAsTemplateCancel() { - this.setState({ askSaveAsTemplate: false }); + this.setState(state => ({ ...state, askSaveAsTemplate: false })); } newTemplateNameChange(value: string, e: any) { - this.setState({ newTemplateName: value }); + this.setState(state => ({ ...state, newTemplateName: value })); } newTemplateDescriptionChange(value: string, e: any) { - this.setState({ newTemplateDescription: value }); + this.setState(state => ({ ...state, newTemplateDescription: value })); } onDeleteDashboardApprove() { @@ -230,28 +233,28 @@ export default class Dashboard extends React.Component ({ ...state, askDelete: false })); } onDeleteDashboardCancel() { - this.setState({ askDelete: false }); + this.setState(state => ({ ...state, askDelete: false })); } onConfigDashboardCancel() { - this.setState({ askConfig: false }); + this.setState(state => ({ ...state, askConfig: false })); } onUpdateLayout() { - this.setState({ editMode: !this.state.editMode }); - this.setState({ editMode: !this.state.editMode }); + this.setState(state => ({ ...state, editMode: !this.state.editMode })); + this.setState(state => ({ ...state, editMode: !this.state.editMode })); } onOpenInfo(html: string) { - this.setState({ infoVisible: true, infoHtml: html }); + this.setState(state => ({ ...state, infoVisible: true, infoHtml: html })); } onCloseInfo() { - this.setState({ infoVisible: false }); + this.setState(state => ({ ...state, infoVisible: false })); } onDownloadDashboard() {