笔记二十五、React中setState是同步还是异步的?

在react18版本之前setState既可以是同步也可以是异步的

在Promise的状态更新、js原生事件、定时器中是同步的

在react的合成事件中,是异步的

在react18版本之后是setState异步的

代码

javascript 复制代码
import React, {Component} from 'react';

class Async extends Component {

    state = {count: 0}

    add = () => {
        // {count: this.state.count + 1}
        this.setState(() => ({count: this.state.count + 1}), () => {
            // 回调函数 获取更新的 state 值
            console.log('更新之后的值:', this.state.count)
        });
        console.log("更新前打印的值:", this.state.count)
    }

    render() {
        return (
            <div>
                <h2>{this.state.count}</h2>
                <button onClick={this.add}>增加</button>
            </div>
        );
    }
}

export default Async;

如何拿到setstate更新的值

javascript 复制代码
this.setState({ counte: this.state.counte + 1 }, () => {
  console.log("更新后的值:", this.state.counte);
});

函数写法

javascript 复制代码
this.setState(
  () => ({ counte: this.state.counte + 1 }),
  () => {console.log("更新后的值:", this.state.counte)}
);
相关推荐
前端Hardy1 小时前
面试官:JS数组的常用方法有哪些?这篇总结让你面试稳了!
javascript·面试
yuki_uix1 小时前
Props、Context、EventBus、状态管理:组件通信方案选择指南
前端·javascript·react.js
全栈老石2 小时前
手写无限画布4 —— 从视觉图元到元数据对象
前端·javascript·canvas
牛奶2 小时前
React 底层原理 & 新特性
前端·react.js·面试
牛奶2 小时前
React 基础理论 & API 使用
前端·react.js·面试
Leon3 小时前
新手引导 intro.js 的使用
前端·javascript·vue.js
小呆呆_小乌龟3 小时前
同样是定义对象,为什么 TS 里有人用 interface,有人用 type?
前端·react.js
牛奶4 小时前
JS随笔:浏览器 API(DOM 与 BOM)
前端·javascript·面试
牛奶4 小时前
JS随笔:异步编程与事件循环
前端·javascript·面试
牛奶4 小时前
JS随笔:数据结构与集合
前端·javascript·面试