我正在为这个项目使用React。
我需要在设置它之后直接读取状态(使用回调),但是当我使用回调将状态打印到屏幕时,我得到之前状态的值。使用devtools我可以看到状态确实发生了变化,所以这不是问题所在。我查看了文档,它说回调应该在状态改变和组件更新后触发,但我没有在组件中看到这种行为。我也没有收到任何错误消息。
以下是代码,感谢您的帮助!
onAnswerSelect = (e) => {
const selectedAnswer = e.target.value;
//Set the state, then simulate a click on the submit button
this.setState(() => ({selectedAnswer}), this.simulateClick(e))
}
simulateClick = (e) => {
console.log(this.state.selectedAnswer)
e.target.parentNode.parentNode.firstChild.click()
}
答案 0 :(得分:5)
您没有将函数传递给setState
回调但是调用它。您可以使用bind
函数传递函数和参数,如下所示
this.setState(() => ({selectedAnswer}), this.simulateClick.bind(this,e))
另一种方法是使用closure
。您可以使simulateClick
函数返回此类函数
simulateClick = (e) => () => {
console.log(this.state.selectedAnswer)
e.target.parentNode.parentNode.firstChild.click()
}
this.setState(() => ({selectedAnswer}), this.simulateClick(e))