猿问

react state不更新更新

tab切换的时候更新当前选择的tab,debugger发现state并没有更新,请问具体原因是什么,万分感谢!

constructor(props) {
    super(props)
    this.state = {
      selected: 'blacklist'
    }
  }

tabChange(newSelected) {  // newSelected = "score"
    const {selected} = this.state; // selected = "blacklist"
    debugger
    if (selected !== newSelected) { // selected = "blacklist", newSelected = "score"
      this.setState({
        selected: newSelected,
      })
      const {tabChange} = this.props
      tabChange(newSelected)
    }
    debugger
    const state = this.state //state = {selected: "blacklist",}
    console.log(state)
  }


鸿蒙传说
浏览 1766回答 3
3回答

cnyballk

官网原话,因为setSate最后会被合成,导致类似于异步

www说

setState 是异步的. 你需要在回调里回去获取更新后的 state.this.setState({  selected: newSelected, }, function() {    console.log(this.state) });

慕的地8271018

react在生命周期和event handler里的setState会被合并(异步)处理。(17版本以后全都会变异步)
随时随地看视频慕课网APP
我要回答