setState 源码浅析

先看下官网的一个demo 定时更新当前元素,

拿这个例子分析下setState的实现原理:

首先是reactComponent的setState方法

将新的状态放到队列中

新的状态是立即更新还是后面render更新(这个例子是在batchedUpdate中更新的情况)

这里采用事务处理为了可以执行用户绑定的生命周期的方法,要更新的状态最终放到dirtyComponents中s

最终dirtyComponents中的数据经过diff后渲染到页面

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏chenssy

【死磕Java并发】—–J.U.C之Condition

在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait()、notify()系列方法可以实现等待/通知模式。在Java SE...

3154
来自专栏程序猿DD

死磕Java并发:J.U.C之AQS简介

Java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略(死磕...

652
来自专栏无题

AQS源码解析

* AQS原理 AQS就是一个同步器,要做的事情就相当于一个锁,所以就会有两个动作:一个是获取,一个是释放。获取释放的时候该有一个东西来记住他是被用还是没被用...

3877
来自专栏解Bug之路

TCP协议详解-定时器

        如代码所示,如果tcp的state<ESTABLISHED,表明其处于连接建立状态。定时器超时后,调用dropit终止连接。大多数伯克利系统将建...

592
来自专栏Ryan Miao

java线程(2)--同步和锁

参考转载:http://rainyear.iteye.com/blog/1734311 http://turandot.iteye.com/blog/17040...

3377
来自专栏大内老A

[WCF-Discovery] WCF-Discovery的协议基础:WS-Discovery

我们传统的服务调用的模式都是这样的:客户端在设计时就预先知道目标服务的地址,并基于这个地址创建客户端终结点对服务进行调用。而我们即将介绍的新特性则是你在预先不知...

1705
来自专栏Brian

RabbitMQ消息通信

---- 概述 RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据或者将作业排队以便让分布式服务器进行处理。应用程序...

4197
来自专栏Phoenix的Android之旅

你可能不了解的Synchonized和ReentrantLock

面试中经常会问到的一类问题是多线程相关的, 比如如何处理Android中的多线程通信,如何处理并发问题。归根结底,处理Java的并发,都离不开锁。 我们将花三到...

942
来自专栏SDNLAB

SDN开发笔记(八):L2switch源码分析(下)

L2switch架构概述 L2switch作为odl的网络基础模块,依赖于openflowplugin模块的消息,同时也调用它的流表下发功能,整个L2switc...

3417
来自专栏java达人

深入解析Java中Flushable接口的flush方法

今天写这篇文章是为了纪念同事讲得两句话:1、flush =在后面对out使劲的抽一鞭子,并命令“赶紧给我写入,我的水桶太满了”;2、写入数据量不大时,可以考虑不...

3218

扫码关注云+社区