javascript - 如何在不折叠堆栈的情况下添加第二个按钮?
问题描述
import React from 'react';
class App extends React.Component{
constructor(){
super()
this.state = {
count: 0
}
this.clicked = this.clicked.bind(this)
}
clicked(){
this.setState(prevState =>{
return {
count : prevState.count+1
}
})
}
doubled(){
this.setState(doubleState =>{
return {
count : doubleState.count+2
}
})
}
render(){
return(
<div>
<h1>
{this.state.count}
</h1>
<button onClick={this.clicked}>changed</button>
<button onClick={this.doubled}>changed and doubled</button>
</div>
)
}
}
export default App;
我的问题是:如何在不崩溃的情况下添加第二个按钮“加倍”?我是新手,所以请不要责怪。第一个按钮工作,但第二个我有一些问题。我应该写第二节课还是可以在一节课中工作?
解决方案
你不绑定你的doubled()
功能。这意味着它会在按钮呈现后立即运行。这将反过来更新状态,这将重新渲染并导致渲染无限循环,您将达到最大调用堆栈限制。
您需要添加this.doubled= this.doubled.bind(this)
推荐阅读
- r - 将 R Sys.time() 转换为配置单元时间戳 data_type
- amazon-web-services - 一份用于多个队列的 terraform 策略文档
- python - 如何从字典中实例化一个类
- arrays - Mongoose 数组不保存 JSON 对象
- sql - VB.net SQL Datepicker 从下拉列表中选择日期,但手动指定时间
- jquery - 模态javascript重置关闭内容
- c++ - How do I use 'StartTranscriptionJobRequest' from the AWS Transcribe C++ API?
- php - Docusign PHP SDK - 填充模板预定义数据标签值
- java - Spring验证方面与静态方法调用
- sharepoint - 在 Power Automate 中使用 concat 函数时遇到问题