0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-16 19:02:40 +00:00

EditPage: Fix potentially inconsistent React state updates

This commit is contained in:
Rae Che
2018-05-27 12:28:15 +01:00
committed by Trevor Buckner
parent 4bde5fcbf8
commit 761597e71f

View File

@@ -62,9 +62,9 @@ const EditPage = createClass({
} }
}; };
this.setState({ this.setState((prevState) => ({
htmlErrors : Markdown.validate(this.state.brew.text) htmlErrors : Markdown.validate(prevState.brew.text)
}); }));
document.addEventListener('keydown', this.handleControlKeys); document.addEventListener('keydown', this.handleControlKeys);
}, },
@@ -91,10 +91,10 @@ const EditPage = createClass({
}, },
handleMetadataChange : function(metadata){ handleMetadataChange : function(metadata){
this.setState({ this.setState((prevState)=>({
brew : _.merge({}, this.state.brew, metadata), brew : _.merge({}, prevState.brew, metadata),
isPending : true, isPending : true,
}, ()=>{ }), ()=>{
this.trySave(); this.trySave();
}); });
@@ -106,11 +106,11 @@ const EditPage = createClass({
let htmlErrors = this.state.htmlErrors; let htmlErrors = this.state.htmlErrors;
if(htmlErrors.length) htmlErrors = Markdown.validate(text); if(htmlErrors.length) htmlErrors = Markdown.validate(text);
this.setState({ this.setState((prevState)=>({
brew : _.merge({}, this.state.brew, { text: text }), brew : _.merge({}, prevState.brew, { text: text }),
isPending : true, isPending : true,
htmlErrors : htmlErrors htmlErrors : htmlErrors
}); }));
this.trySave(); this.trySave();
}, },
@@ -136,11 +136,11 @@ const EditPage = createClass({
save : function(){ save : function(){
if(this.debounceSave && this.debounceSave.cancel) this.debounceSave.cancel(); if(this.debounceSave && this.debounceSave.cancel) this.debounceSave.cancel();
this.setState({ this.setState((prevState) => ({
isSaving : true, isSaving : true,
errors : null, errors : null,
htmlErrors : Markdown.validate(this.state.brew.text) htmlErrors : Markdown.validate(prevState.brew.text)
}); }));
request request
.put(`/api/update/${this.props.brew.editId}`) .put(`/api/update/${this.props.brew.editId}`)