我正在构建一个非常原始的测验应用程序与ReactJS,我无法更新我的Questions
组件的状态。它的行为是它呈现questions
阵列DOM的正确指标尽管this.state.questionNumber
始终是落后一步在handleContinue()
:ReactJS onClick状态改变了一步
import React from "react"
export default class Questions extends React.Component {
constructor() {
super()
this.state = {
questionNumber: 1
}
}
//when Continue button is clicked
handleContinue() {
if (this.state.questionNumber > 3) {
this.props.unMount()
} else {
this.setState({
questionNumber: this.state.questionNumber + 1
})
this.props.changeHeader("Question " + this.state.questionNumber)
}
}
render() {
const questions = ["blargh?", "blah blah blah?", "how many dogs?"]
return (
<div class="container-fluid text-center">
<h1>{questions[this.state.questionNumber - 1]}</h1>
<button type="button" class="btn btn-primary" onClick={this.handleContinue.bind(this)}>Continue</button>
</div>
)
}
}
我不确定我理解你的问题。我确实在排队更新它后立即访问'this.state.questionNumber'。 在React中设置状态是异步操作,因此不能保证它会及时更新下一个函数调用。 来自官方文档:_setState()不会立即改变this.state,但会创建一个挂起状态转换。在调用此方法后访问this.state可能会返回现有值。_ –
在这种情况下,什么是一个好的选择? –