Javascript 韩元价值';在按下第二个按钮之前,请勿更改

Javascript 韩元价值';在按下第二个按钮之前,请勿更改,javascript,reactjs,firebase,reactfire,Javascript,Reactjs,Firebase,Reactfire,我有一个按钮,可以改变或增加对象的值 <Button bsStyle="info" bsSize="lg" onClick={this.addKoala}> 我在同一进度条中有两个值,所以当您添加到其中一个时,需要从另一个中获取。这就是为什么我要从托克尔带走2个 然后将其推送到firebase后端: handleClick: function(itemAdded) { var style = null; if (itemAdded === "Towel") { st

我有一个按钮,可以改变或增加对象的值

<Button bsStyle="info" bsSize="lg" onClick={this.addKoala}>
我在同一进度条中有两个值,所以当您添加到其中一个时,需要从另一个中获取。这就是为什么我要从托克尔带走2个

然后将其推送到firebase后端:

handleClick: function(itemAdded) {
  var style = null;
  if (itemAdded === "Towel") {
    style = "danger"
  } else {
    style = "info"
  }
  this.props.itemsStore.push({
    itemStyle: style,
    text: "A new " + itemAdded + " was rewarded!",
    curItemCount: "It's now: " + this.state.towelCount + " to " + this.state.koalaCount,
  });

  var submitJSON = {
    "koalaCount": this.state.koalaCount,
    "towelCount": this.state.towelCount
  };
  Actions.patchScores(submitJSON);
},

在我刷新网站后,第一次按下按钮,一切正常,但考拉和毛巾的值没有改变。在那之后,它工作完成了,但第一次没有工作。任何帮助都将不胜感激

setState方法有一个可选的第二个argumnet,它是在执行setState并调用render之后执行的回调函数

void setState(
  function|object nextState,
  [function callback]
)
在您的代码中,handleClick方法假设setState已经执行,valaues已经更新。但不能保证这永远是真的。如果提供handleCLick方法作为setState的回调,则可以确保这一点

addKoala: function() {
  this.setState({
    towelCount: this.state.towelCount - 2,
    koalaCount: this.state.koalaCount + 2
  },  this.handleClick("Koala").bind(this);
}
addKoala: function() {
  this.setState({
    towelCount: this.state.towelCount - 2,
    koalaCount: this.state.koalaCount + 2
  },  this.handleClick("Koala").bind(this);
}