javascript - ( react )setState()回调在状态改变后不触发

标签 javascript reactjs

我在这个项目中使用 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/

相关文章:

javascript - 我听说你喜欢 React,所以我们把 React 放在你的 React Native 中

javascript - 警告 : Recursive process. 检测到 nextTick

javascript - 对嵌套 javascript 数组内的对象进行分组

使用 styled-components 进行 CSS 特征检测

javascript - 将 BN 转换为数字

javascript - javascript中Java的final相当于什么

javascript - 如果您在 PureComponent 渲染方法中不使用 prop,会有什么不同吗?

javascript - 在循环中循环访问对象属性

javascript - 有没有办法通过javascript找出Chrome的媒体设置环境?

css - react 背景图片不显示图片