在我的应用程序中,

class App extends Component {
  constructor(props){
    super(props)
    this.state={
      count:0
    }
  }
  render() {
    return (
      <div className='App-header'>
        <button onClick={()=>{this.setState({count:this.state.count=this.state.count++})}}>You Clicked This : {this.state.count} Times.</button>
      </div>
    )
  }
}

我在此按钮上添加了一个事件:

<button onClick={()=>{this.setState({count:this.state.count=this.state.count++})}}>You Clicked This : {this.state.count} Times.</button>

但当我点击它时,count的值并没有增加

ps:我是新来的

推荐答案

这与普通的旧javascript有着更多的关系,而不是react和状态管理.

以下是您发行的小型复制品:

let y = 2;
y = y++;
console.log(y);
y = ++y;
console.log(y);

这是因为++[(递增运算符)](如果使用后缀,运算符在操作数之后(例如,x++),递增运算符递增并返回递增之前的值.)作品

从文档中:

如果使用后缀,操作数后加运算符(例如,x++),则递增运算符递增并返回递增前的值.如果使用前缀,且运算符在操作数之前(例如++x),则递增运算符递增并返回递增后的值.

此外,值得注意的是,您不应执行以下操作:

this.state.variable = randomValue;

修复程序

this.setState({count:this.state.count=++this.state.count})

将起作用,因为

this.state.count=++this.state.count

返回增量计数.但状态实际上更新了this.setState,您还可以执行以下操作:

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

When new state value is dependent on previous value

Javascript相关问答推荐

使用json文件字符串来enum显示类型字符串无法按照计算的enum成员值的要求分配给类型号

Vue:ref不会创建react 性属性

模块与独立组件

传递一个大对象以在Express布局中呈现

了解Node.js中的EventEums和浏览器中的addEventEums之间的关系

Angular:动画不启动

Rehype将hashtag呈现为URL

如何使用JavaScript将文本插入空div

jQuery s data()[storage object]在vanilla JavaScript中?'

我的角模板订阅后不刷新'

使用POST请求时,Req.Body为空

创建以键值对为有效负载的Redux Reducer时,基于键的类型检测

如何在DYGRAPS中更改鼠标事件和键盘输入

无法读取未定义的属性(正在读取合并)-react RTK

我不知道如何纠正这一点.

每隔3个项目交替显示,然后每1个项目交替显示

未找到用于 Select 器的元素:in( puppeteer 师错误)

计算对象数组中属性的滚动增量

如何用react组件替换dom元素?

为什么我的Reaction组件不能使用createBrowserRouter呈现?