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)} )} }/>