javascript - setState 的回调是否在(同步)状态设置后发生?

标签 javascript reactjs

我有一个表单选择,其值为“更改”和“取消”。 每次我选择不同的一个时,我都会console.log“mySelection”的值

handleSelectChange = e => {
    var myValue = e.target.value
    if (myValue == "change"){
        this.setState({selectText: "Change rent date"})
        this.setState({selection: "sdsd"})
        this.setState({mySelection: "change" }, console.log(this.state.mySelection))
    }
    if (myValue == "cancel"){
        this.setState({selectText: "Cancel a rent"})
        this.setState({selection: "bob"})
        this.setState({mySelection: "cancel"  }, console.log(this.state.mySelection))
    }
}

当我选择更改时,它控制台记录取消。当我选择取消时,它控制台记录更改。我以为setState的回调是在状态设置之后发生的?

谢谢

最佳答案

您必须传递一个函数作为setState的第二个参数

handleSelectChange = e => {
    var myValue = e.target.value
    if (myValue == "change"){
        this.setState({selectText: "Change rent date"})
        this.setState({selection: "sdsd"})
        this.setState({mySelection: "change" }, () => console.log(this.state.mySelection))
    }
    if (myValue == "cancel"){
        this.setState({selectText: "Cancel a rent"})
        this.setState({selection: "bob"})
        this.setState({mySelection: "cancel"  }, () => console.log(this.state.mySelection))
    }
}

关于javascript - setState 的回调是否在(同步)状态设置后发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55529178/

相关文章:

reactjs - SonarQube 对 JSX 文件的分析

reactjs - 清除超时/间隔是否必须在 `useEffect` React hook 内?

javascript - 如何检查父元素是否包含具有 useEffect 和 UseRef 的特定类的子元素?

javascript - 在 React Native 中创建阴影设计

JavaScript 变量未正确解释

javascript - 简单的函数返回我在 JavaScript 中没想到的数字

reactjs - 如何从antd中的数据动态创建列?

javascript - 更改 svg 填充颜色,然后绘制到 Canvas

javascript - 如果任何特定的 div 具有特定的图像,如何显示任何 div

javascript - glimmerjs 中的 react 上下文是什么?