increment ++运算符不适用于设置反应状态

时间:2016-10-04 06:22:27

标签: javascript reactjs

我试着用反应做一个简单的计数器,我发现sess_destroy()不起作用。我想知道为什么。

这有效

++

但这不起作用

..

addCount() {
  this.setState({count:this.state.count+1})
}
..

你可以在这里试试 https://jsfiddle.net/Lwvbe2o2

2 个答案:

答案 0 :(得分:2)

为什么

因为x++表达式首先返回值x然后它递增它,而++x首先递增它,然后返回该递增值。

仅出于实验目的,您可以使用 preincrement 来验证这一点

// Don't do this, it's just to explain why it works.
addCount () {
  this.setState({count: ++this.state.count})
}

然后它会做你想要的,但它不是愚蠢的,因为它确实直接变异this.state.count

惯用法

在ReactJS中你不想直接改变this.state.count,所以你的第一个例子更具惯用性:

addCount () {
  this.setState({count: this.state.count + 1})
}

参考

MDN postfix/prefix increment operator ++

答案 1 :(得分:0)

当你执行'a = b ++'时,首先将b的值赋给a,然后递增b。它被称为后增量。 在你的例子中它是相同的:'count'将等于'this.state.count'(所以值将是相同的)然后你增加'this.state.count',但它将被'count`替换'当setState完成因为你改变了状态。 setState在这里设置你的变量,不要在这个方法中改变它。

你的第一个主张是做你想做的事。

希望这有帮助!