首页 > 其他分享 >setState同步异步

setState同步异步

时间:2022-11-12 12:01:19浏览次数:46  
标签:异步 同步 钩子 更新 事件 setState

setState 何时同步何时异步?

点击查看代码
1、setState 只在合成事件(react 为了解决跨平台,兼容性问题,自己封装了一套事件机制,
代理了原生的事件,像在 jsx 中常见的 onClick、onChange 这些都是合成事件)和钩子函数(生命
周期)中是“异步”的,在原生事件和 setTimeout 中都是同步的
2、setState 的“异步”并不是说内部由异步代码实现,其实本身执行的过程和代码都是同步的,
只是合成事件和钩子函数的调用顺序在更新之前,导致在合成事件和钩子函数中没法立马拿到更
新后的值,形式了所谓的“异步”,当然可以通过第二个参数 setState(partialState,callback)中的
callback 拿到更新后的结果
3、setState 的批量更新优化也是建立在“异步”(合成事件、钩子函数)之上的,在原生事件
和 setTimeout 中不会批量更新,在“异步”中如果对同一个值进行多次 setState,setState 的批量更
新策略会对其进行覆盖,取最后一次的执行,如果是同时 setState 多个不同的值,在更新时会对
其进行合并批量更新

标签:异步,同步,钩子,更新,事件,setState
From: https://www.cnblogs.com/strundent/p/16883402.html

相关文章

  • 自有服务器搭建git并同步到网站根目录,实现git更新网站
    一.GIT安装yuminstall-ygit服务器端创建git用户[root@localhosthome]#idgitid:git:无此用户[root@localhosthome]#useraddgit[root@localhosthom......
  • mysql-canal-kafka-kettle 数据实时同步链部署bug 填坑过程
     1,因为mysql版本从5.7提高到8.0 ,需要更改用户配置。createuser'canal'@'%'identifiedby'canal';grantselect,replicationslave,replicationclienton......
  • 20201317-Thread同步测试
    Thread同步测试代码#include<stdio.h>#include<pthread.h>#include<stdlib.h>#include<semaphore.h>#defineNUM5intqueue[NUM];sem_tblank_number,produ......
  • Android实战简易教程-第四十九枪(两种方式实现网络图片异步加载)
    加载图片属于比较耗时的工作,我们需要异步进行加载,异步加载有两种方式:1.通过AsyncTask类进行;2.通过Handler来实现,下面我们就来看一下如何通过这两种方式实现网络图片的异步加......
  • 线程同步和死锁
    线程同步线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用。synchronized锁为了保证多线......
  • centos7自建yum仓库同步阿里云yum源
    背景:内网环境服务器不能直接安装工具或服务,可以用一台外网服务器同步阿里云的yum仓库,作为本地仓库搭建本地yum仓库编辑yum配置文件,开启缓存使用功能,设置缓存路径cp/e......
  • Java组合异步编程(2)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 多数码农在开发的时候,要么处理同步应用,要么处理异步。但是如果能学会使用CompletableFuture,就会具备一种神奇的能力:将同......
  • 问题:父组件mounted发送异步请求,子组件props接收?
    极有可能是因为,父组件mounted异步的请求,在子组件中被v-for控制,所以导致了,父组件mounted会先执行 父组件mounted中发送一个异步请求,然后发送给子组件子组件通过props接收......
  • [gRPC] 关闭异步服务器
    [gRPC]关闭异步服务器在grpc的异步模式下,如何正确的关闭grpc服务呢?一般来讲,我们使用异步模式时grpc会写一个主循环,轮询所有请求void*tag;boolok;while(likely(!(*......
  • Guava LoadingCache本地缓存的正确使用姿势——异步加载
    1.【背景】AB实验SDK耗时过高同事在使用我写的实验平台sdk之后,吐槽耗时太高,获取实验数据分流耗时达到700ms,严重影响了主业务流程的执行2.【分析】缓存为何不管用我记......