[react] react中的setState执行机制是什么呢?

[react] react中的setState执行机制是什么呢?

1.将setState传入的partialState参数存储在当前组件实例的state暂存队列中。
2.判断当前React是否处于批量更新状态,如果是,将当前组件加入待更新的组件队列中。
3.如果未处于批量更新状态,将批量更新状态标识设置为true,用事务再次调用前一步方法,保证当前组件加入到了待更新组件队列中。
4.调用事务的waper方法,遍历待更新组件队列依次执行更新。
5.执行生命周期componentWillReceiveProps。
6.将组件的state暂存队列中的state进行合并,获得最终要更新的state对象,并将队列置为空。
7.执行生命周期componentShouldUpdate,根据返回值判断是否要继续更新。
8.执行生命周期componentWillUpdate。
9.执行真正的更新,render。
10.执行生命周期componentDidUpdate

个人简介

我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,
但坚持一定很酷。欢迎大家一起讨论











主目录

与歌谣一起通关前端面试题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 的帐号与群组:有效与初始群组、groups, newgrp

关于群组: 有效与初始群组、groups, newgrp认识了帐号相关的两个档案 /etc/passwd 与 /etc/shadow 之后,您或许还是会觉得奇怪, 那么群组的设定档在哪里?还有,在 /etc/passwd 的第四栏不是所谓的 GID 吗?那…

提示缺少Qedit.h问题

From: http://blog.csdn.net/jsmiler/article/details/6495763 DirectX 9.0 SDK 开发包以及扩展包下载(February 2005) http://dev.csdn.net/article/62/62941.shtm。直接到微软官网下的话,需要validation确认。 http://download.microsoft.com/downlo…

Oracle Buffer Cache的keep、recycle、default pool概念图解

Oracle Buffer Cache的keep、recycle、default pool概念图解 转载于:https://blog.51cto.com/maclean/1278284

[react] 同时引用这三个库react.js、react-dom.js和babel.js它们都有什么作用?

[react] 同时引用这三个库react.js、react-dom.js和babel.js它们都有什么作用? React.js: React中的组件(Component)、Context、hooks等核心Api,还有虚拟DOM的比较、Fiber的算法实现等React-dom.js 与web浏览器DOM相关的API,比如虚拟DOM的挂…

计算程序执行时间

time命令用于计量运行时间。real从启动到终止,user用户空间时间,sys内核空间时间。转载于:https://www.cnblogs.com/embedded-linux/p/5046726.html

程序中调用命令行命令,不显示那个黑黑的DOS窗口

From: http://hi.baidu.com/yanqiuge/item/5da466c3d3f18453ad00ef1d 在程序中使用命令行时,会有黑黑的DOS窗口,很不爽,在网上查了一下,写一个有点实用价值的小程序: /****************************** 文件名&#…

Oracle Row cache lock图解

Oracle Row cache lock(dictionary cache)图解 转载于:https://blog.51cto.com/maclean/1278273

[react] create-react-app创建新运用怎么解决卡的问题?

[react] create-react-app创建新运用怎么解决卡的问题? (这个问题应该描述的是使用cra脚手架创建项目慢的问题) 这是因为cra默认使用的国外的npm源,替换为国内的npm源即,如淘宝源npm config set registry https://registry.npm.taobao.org 个…

C语言基础知识汇总

c语言执行步骤: 一.编辑程序 1.编写c语言的代码,保存在扩展名.c的文件中,源文件。 2.编写代码有三种方式: a.vi命令方式系统自带 b.ultraedit网络下载 c.xcode网络下载 二.编译(gcc 文件名.c) 将c语言转换成计算机识别的代码 三.…

PHP中的逆波兰式应用

定义  逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后) 如:我们平时写ab,这是中缀表达式,写成后缀表达式就是:ab (ab)*c…

执行dos命令,不出现黑色的dos窗口

先准备一个.vbs文件,写好内容: Set ws CreateObject("Wscript.Shell") ws.run "cmd /c a.bat", vbhide再准备相应的.bat文件: dir /s /b * > a.logok, 运行.vbs文件吧

[react] 展示组件和容器组件有什么区别?

[react] 展示组件和容器组件有什么区别? 展示组件(Presentational Component) 关注页面的展示效果(外观) 内部可以包含展示组件和容器组件,通常会包含一些自己的DOM标记和样式(style) 通常允许通过this.pr…

Java学习----方法的重载

一个类中有多个同名的参数不一样的方法。 作用:可以根据不同的条件调用不同的方法。 注意:java不会因为方法的返回类型或者权限的不同而判断为不同的两个方法。 public class Student {public Student() {System.out.println("Student构造方法1&quo…

[react] react的书写规范有哪些

[react] react的书写规范有哪些 React元素必须使用大驼峰命名的方式组件尽量命名,方便进行调试JSX尽量用小括号包起来,更加直观,防止换行时出错 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持…

LAMP源代码编译整理

在我们编译安装Apache 之前,要考虑的是让Apache 在什么样的模式下运行,因为从Apache 2.0 就加入了MPM(Multi-Processing Modules,多道处理模块)。Apache 2.0 在性能上的改善最吸引人。在支持POSIX 线程的Unix 系统上&a…

windows平台编译vlc

From: http://blog.csdn.net/guanshangming/article/details/5581270 转自:http://jeremiah.blog.51cto.com/539865/114190Jeremiah刚刚工作几个月,参与的第一个项目是与视频监控有关,分配给我的任务就是用开源的vlc做一个自己的播放器。对于开源项目来…

Appium--环境搭建

Appium介绍 Appium是一个移动端的自动化框架,可以做H5、Web测试、可以做功能测试(Android、IOS)、可以做跨进程测试,且是跨平台的。Appium做测试的时候支持的语言有很多种,包括java、Python、ruby、PHP、C#等。由于我熟…

[react] 类组件和函数式组件有什么区别?

[react] 类组件和函数式组件有什么区别? 函数式组件没有state和一系列的钩子函数,只接收一个props 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前…

Windows 系统下Git安装图解

From: http://blog.csdn.net/jiguanghoverli/article/details/7902791 Windows 系统下Git安装图解 简单来说Git是一个免费的、开源的版本控制软件,从功能上讲,跟我们比较熟悉的Subversion(SVN)这类版本控制软件没什么两样。由于工作的需求,需…

opencv 在debian6.0下安装

1.下载 OpenCV-2.3.1a.tar.bz2 http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.3.1/ 2. 解压 tar -jxvf OpenCV-2.3.1a.tar.bz2 -C extract path 3 编译 安装 cmake -D CMAKE_BUILD_TYPERELEASE -D CMAKE_INSTALL_PREFIX/usr/local sourcecode/path 得到 …