与增加和减少反应中的计数器有关的基本问题

basic question related to increment and decrement the counter in react

这是一道基础题。我已经开始学习 React 并且我有一个作业,我必须通过递增和递减按钮来更改值。我已经使用 class 组件方式实现了它。

但我有疑问。请参考以下代码更改值的位置。

increment = () => {
    this.setState({
      count: this.state.count + 1   //HERE -----------------
    });
  };

为什么不是这样??

increment = () => {
    this.setState({
      this.state.count: this.state.count + 1    // Here ...ERROR COMES
    });
  };

那么为什么不能像this.state.count那样访问:this.state.count + 1 ?? 请告诉我原因。

之所以不起作用,是因为在对象内赋值的语法与普通变量赋值的语法不同。

详细说明:

创建对象时使用以下语法:

let myObj = {
  foo: 'bar'
}

或者你可以这样做:

let myObj = {}

myObj.foo = 'bar'

但你做不到

let myObj = {
  myObj.foo: 'bar'
}

您使用 setState 函数所做的是创建一个新对象并将其传递给函数。

你应该像这样简单地写它:

const newState = { count: this.state.count + 1 }
this.setState(newState);

这就是您必须使用第一种语法的原因。

然后 setState 所做的是将您给它的对象与当前 this.state 合并,在下一次渲染中 this.state 将包含更新的值。