由于某种原因,当我按下一个按钮时,我的setState的值没有更新 . 它用于进度条,每次按下按钮时进度条增加20 . 所以像 Value :this.state.value 20有谁知道发生了什么?任何帮助表示赞赏 . 谢谢!
import React, {Component} from "react";
import { Button, Progress } from 'reactstrap';
import "../src/Questions.css"
class Questions extends React.Component {
handleClick=()=>{
alert(this.state.value);
this.setState({
value:this.state.value +20
})
}
render() {
this.state = {
value:10
}
return(
<div>
<div><Progress value={this.state.value} /></div>
<div className="howMuchText">How much does it cost to build an app</div>
<div className="nextButton">
<Button onClick={this.handleClick} color="primary" size="lg">Next</Button>
</div>
</div>
)
}
}
export default Questions;
3 回答
这不是更新的原因是因为您在
handleClick
函数中使用setState
更新状态,然后在render
函数中重置它,以便撤消更新 . 试试这个 .将您的来源从您拥有的内容更改为:
这应该做到这一点 . 希望这可以帮助 .
改变渲染函数内的状态是错误的 . 每次更新,状态都会发生变化 . 国家在做出反应时是不变的 . 您可以在构造函数中初始化它 .
您应该使用构造函数来初始化值 . 当您单击按钮时,您在代码中做错了什么,它正在更新值,但是setState重新渲染,所以再次初始化值= 10 .