关于react的this.setState异步问题,setState数据不更新

我们在给state状态赋值的时候一般都会使用

this.setState({
    name:newName
})

但是有时候我们会发现值的更新滞后,比如我们刚刚更新的name值,但是页面显示的还是以前的name,出现这种情况的原因就是 setState() 有时候是异步的

React 为了优化性能,有可能会将多个 setState() 调用合并为一次更新。

所以我们需要用到回调函数来解决

this.setState({
    name:newName
},fucntion(){
    //在这里进行一些与name有关的业务逻辑处理
    //这里的name值是最新的
    console.log(name)
})

当然有些时候我们仅仅就是为了更新页面数据信息,显然上面的方法不适用,这时我们使用下面的方法

它接收一个函数,而不是一个对象。该函数接收前一个状态值作为第 1 个参数, 并将更新后的值作为第 2 个参数

this.setState((prevState, props) => ({
    name: newName
}));

这样更新的name就是同步的了,当然此处也可以不使用Arrow Function。

【右上角点个赞,谢谢】

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值