笔记二十五、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)}
);
相关推荐
a1117764 分钟前
SLAM 学习笔记(四)后端(KF BA)
笔记·学习
李明卫杭州27 分钟前
Vue2 portal-target 组件与 Vue3 的针对性优化
前端·javascript·vue.js
六点_dn1 小时前
Linux学习笔记-chmod命令
linux·笔记·学习
那个松鼠很眼熟w1 小时前
4. GB2312字符集,以及字符编码
笔记
浮江雾1 小时前
Flutter第四节------核心概念学习笔记:从基础语法到异步编程
linux·服务器·开发语言·笔记·flutter·入门·基础
你怎么知道我是队长2 小时前
JavaScript的函数介绍
开发语言·前端·javascript
weedsfly2 小时前
观察者模式 vs 发布-订阅模式:从概念到实战,一次讲清楚
前端·javascript·面试
咪饭只吃一小碗2 小时前
告别微调成本!用 RAG 本地向量库解决大模型私有领域数据接入
javascript·后端·面试
ysa0510302 小时前
【板子】欧拉序
c++·笔记·算法·深度优先·图论
miss2 小时前
海康威视 IoT 平台前端实战:视频流、海量设备与实时数据可视化
前端·javascript·物联网