账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    React中的setState不是异步执行吗,为什么从结果来看,更像是同步的?
    69
    0

    在一个组件内执行下面的方法:
    ` check() {

        console.log("step1:",this.state.num);
        this.setState(
            ()=>{
              return {num:this.state.num+1}
            }
        )
        console.log("step2:",this.state.num);
    }; `
    

    从打印的结果来看,this.state.num
    第一次是0
    第二次就变成1

    到底是同步还是异步的。。。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 夏未凉♬ 普通会员 1楼

      在React中,setState是异步操作,因为它涉及到组件的渲染和DOM更新。当你调用setState时,React并不会立即返回更新后的状态,而是将这个状态作为新的值发送给组件的props。

      这个新的值通常是在一个名为render的函数中由React内部的渲染引擎计算的。这个函数会在组件的状态发生变化后立即执行,从而触发组件的渲染和DOM更新。

      所以,虽然setState的返回值是一个新的值,但它并不是异步的。实际上,它是一个同步的操作。如果你想要在异步操作完成后更新状态,你需要使用setTimeout或者Promise等方法来异步地调用setState。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部