首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

React篇(006)-React 很多个 setState 为什么是执行完再 render

答案:react为了提高整体的渲染性能,会将一次渲染周期中的state进行合并,在这个渲染周期中对所有setState的所有调用都会被合并起来之后,再一次性的渲染,这样可以避免频繁的调用setState导致频繁的操作dom,提高渲染性能。 具体的实现方面,可以简单的理解为react中存在一个状态变量isBatchingUpdates,当处于渲染周期开始时,这个变量会被设置成true,渲染周期结束时,会被设置成false,react会根据这个状态变量,当出在渲染周期中时,仅仅只是将当前的改变缓存起来,等到渲染周期结束时,再一次性的全部render。 [参与互动](https://github.com/yisainan/web-interview/issues/501)

01

AQS队列同步器

​ AQS主要用来构建锁或者其他同步器组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成想获取资源的线程的排队工作。其主要使用方式是继承,子类通过继承它并实现它的抽象方法来管理同步状态,在管理同步状态的时候就需要对同步状态变量(int成员变量)进行修改,为了安全的修改同步状态变量就可以使用AQS已经提供的三个方法(getState(),setState(int newState),compareAndSetState(int expect, int update))修改。AQS的子类被推荐定义为自定义同步组件的静态内部类,同步器自身没有实现任何同步接口,可以支持共享式地获取同步状态,可以方便实现不同的同步组件(ReentrantLock,ReentrantReadWriteLock和CountDownLatch等)。

02
领券