我在这个项目中使用 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()
}
最佳答案
您不是将函数传递给 setState
回调,而是调用它。您可以像这样使用 bind
函数传递函数和参数
this.setState(() => ({selectedAnswer}), this.simulateClick.bind(this,e))
另一种方法是使用闭包
。您可以使 simulateClick
函数返回这样的函数
simulateClick = (e) => () => {
console.log(this.state.selectedAnswer)
e.target.parentNode.parentNode.firstChild.click()
}
this.setState(() => ({selectedAnswer}), this.simulateClick(e))
关于javascript - ( react )setState()回调在状态改变后不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47516569/