From 761597e71f662238e5549e0f4b74d7eb2a38039a Mon Sep 17 00:00:00 2001 From: Rae Che Date: Sun, 27 May 2018 12:28:15 +0100 Subject: [PATCH] EditPage: Fix potentially inconsistent React state updates --- client/homebrew/pages/editPage/editPage.jsx | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index 23d657281..88dd94f54 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -62,9 +62,9 @@ const EditPage = createClass({ } }; - this.setState({ - htmlErrors : Markdown.validate(this.state.brew.text) - }); + this.setState((prevState) => ({ + htmlErrors : Markdown.validate(prevState.brew.text) + })); document.addEventListener('keydown', this.handleControlKeys); }, @@ -91,10 +91,10 @@ const EditPage = createClass({ }, handleMetadataChange : function(metadata){ - this.setState({ - brew : _.merge({}, this.state.brew, metadata), + this.setState((prevState)=>({ + brew : _.merge({}, prevState.brew, metadata), isPending : true, - }, ()=>{ + }), ()=>{ this.trySave(); }); @@ -106,11 +106,11 @@ const EditPage = createClass({ let htmlErrors = this.state.htmlErrors; if(htmlErrors.length) htmlErrors = Markdown.validate(text); - this.setState({ - brew : _.merge({}, this.state.brew, { text: text }), + this.setState((prevState)=>({ + brew : _.merge({}, prevState.brew, { text: text }), isPending : true, htmlErrors : htmlErrors - }); + })); this.trySave(); }, @@ -136,11 +136,11 @@ const EditPage = createClass({ save : function(){ if(this.debounceSave && this.debounceSave.cancel) this.debounceSave.cancel(); - this.setState({ + this.setState((prevState) => ({ isSaving : true, errors : null, - htmlErrors : Markdown.validate(this.state.brew.text) - }); + htmlErrors : Markdown.validate(prevState.brew.text) + })); request .put(`/api/update/${this.props.brew.editId}`)