我有一个带有“更改”和“取消”值的表单选择。
每次选择其他选项时,都会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/

10-09 09:55