React的setState立即执行方案

本文主要说明如何使this.setState({})中的state立即执行。
在react中只要状态state,无法设置全局变量,我们需要通过设置state来设置。
而,setState延迟更新的原因在于—state是异步执行的,只有render发生变化的时候才触发this.setState()。


(一)思路:想要在不更新render的情况下立即执行(同步执行),需要在setState后加上一个function函数
当然,render更新了之后对state的值没有任何影响。
现在只是说,在没有更新render的情况下,我们加上了function也能获取到state的值


(二)具体解决方案:

// 1.设置代码
this.setState({
   myState: 'doubi'
   }, function() {
     // stateFunction是需要立即用到
     this.stateFunction()
   })
// 2.在函数中直接调用
stateFunction() {
   console.log('doubi', this.state.myState)
}

(三)提醒:

// 1.在setState中的调用的stateFunction()函数不会立即执行,调用的时候才执行该函数。
// 也就是说,setState中的function只是声明能立即用到,而不会立即执行。
// 2.当stateFunction()函数里面有传入参数的时候,在设置setState的时候,也需要函数。
// 如下代码----------
//如果函数是这样的===>
stateFunction(y, z) {
   let abc = []
   if(y.length>0) {
     abc.push(z)
   }
   console.log('doubi', this.state.myState)
   return abc
}
// 那么在setState中应该这样设置====>
this.setState({
   myState: 'doubi'
   }, function() {
     // stateFunction的参数是不能少的哦
     this.stateFunction(y, z)
   })

这样就ok了!!!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修复儿童缺牙先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值