问题描述
在项目中使用state存储本组件的状态 , 使用setState对组件进行状态更新 , setState更新数据会重新渲染页面
问题:state的值改变了,但是页面没有渲染出来
代码如下:
constructor(){
super()
this.state={
userData:[]
}
}
this.setState(
userData:this.getUserData()
)
原因
原来,setState方法是异步的,在state状态改变还没有执行完时,使用state的值,还是改变前的值
解决方案
方法一:使用setState的回调函数,此回调函数会在状态改变后,进行调用 。将要使用state的代码写入回调函数即可
this.setState(userData:this.getUserData(),()=>{
//
//
})
方法二:使用async 与await结合使用
async getUserData(){
await this.setState({
userData:this.getUserData()
});
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有