【问题标题】:Does callback of setState happen after( in sync) state is set?setState 的回调是否在设置(同步)状态后发生?
【发布时间】:2019-08-26 23:46:56
【问题描述】:

我有一个带有“更改”和“取消”值的表单选择。 每次我选择不同的时候,我都会控制台记录“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的回调发生在状态设置之后?

谢谢

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    您必须将函数作为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))
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      相关资源
      最近更新 更多