RN this.setState获取更新的值

2018-10-30  本文已影响170人  手中的风信子

RN 的修改状态方法:this.setState是异步的,当你在调用此方法后,想要获取新的值是获取不到的,看以下代码:

this.state{a:123},
this.setstate({a:345})
console.log(this.state.a)  //123

除非在shouldComponentUpdate 或者 componentWillUpdate触发后获取.

// 返回一个布尔值。在组件接收到新的props或者state时被调用。在初始化时或者使用forceUpdate时不被调用。 
  // 可以在你确认不需要更新组件时使用。
  shouldComponentUpdate(){
    console.log("sholudupdate"+this.state.mode)
    return true
  }
  // 在组件接收到新的props或者state但还没有render时被调用。在初始化时不会被调用
  componentWillUpdate(){
    console.log("WillUpdate"+this.state.mode)
  }

也可以使用回调函数,这个函数相当于使用生命中期中的ComponentDidupdate函数的作用

{/* 调用setState时,使用callback函数,因为setState是异步的,想要拿到更新后的值,可以使用回调函数 */}
            <Button title="datetime" onPress={ () => {this.setState({
              mode: 'datetime'
            }, ()=>{"callback回调"+console.log(this.state.mode)} )}  }/>
上一篇 下一篇

猜你喜欢

热点阅读