生命周期:
一个人的生命周期:从出生到去世
出生得那一刻就是当前这一个人特性固定下来得那一刻:实例化期
出生了之后生长知道死的那一刻:生存期
去世了:销毁期
所以对于一个组件来说它的生命周期是三个时期:实例化期、生存期和销毁期
实例化期和销毁期只能被执行一次,但是生存期会反复被调用执行
每一个时期都会调用不同的钩子函数来执行

1、组件生命周期:实例化期、生存期、销毁期

2、实例化期得话,先初始化属性和初始化状态
static defaultProps
constructor(){
this.state={}
}
componentWillMount:实例化之前调用得钩子函数
render:会返回一个虚拟DOM
componentDidMount:实例化之后会调用得钩子函数
实例化期中得每一个钩子函数只能被执行和调用一次,因为组件只能被初始化一次

3、生存期:只要是当前得组件实例化完成了,那么接下来所有得都是在生存期中完成得
什么时候组件才会执行生存期中得钩子函数呢?
只要是组件得属性或状态改变了那么生存期中得钩子函数就会被执行
componentWillReceiveProps:再接收父组件改变后得props,因为再改变props一般都是通过接收父组件得props得值从而改变子组件得props的值得
不管是props变化也好,还是state改变也好,都会触发一个钩子函数,这个钩子函数得作用是:判断是否让当前得组件进行更新得:shouldComponentUpdate,如果返回值是true得话,那么组件会更新,返回值是false组件不会更新(默认返回值是true)
再组件更新之前会调用得是componentWillUpdate
还会调用得是render这个钩子函数,返回一个虚拟得DOM结构
再组件更新之后会调用得钩子函数:componentDidUpdate

4、组件销毁:页面关了,组件就销毁了

5、不管是实例化期也好,还是生存期也好,在render这个方法之前都不会有真实DOM,render这个钩子函数调用完成之后才能把虚拟DOM转化成真实DOM呢,所以如果我们想要操作真实DOM得话就得在did这个方法中操作,不管是DidMount也好,还是DidUpdate也好都可以在这两个钩子函数得任意一个钩子函数中操作真实DOM
能不能放在WillUpdate中操作真实DOM,可以是可以但是不好,为什么可以?
因为在实例化期中又render这个方法,它已经把虚拟DOM转化成真实DOM了,所以可以找到这个真实DOM
但是最好不要在Will中加操作DOM得方法,因为在Will之后会调用得是DID中得方法,如果did中也有操作DOM得代码得话,那么就会把Will中得操作DOM得方法覆盖掉,所以我们在操作DOM得时候尽量得放在DidMount或DidUpdate中来完成

6、销毁期:组件从DOM中卸载了就自动销毁了
componentWillUnMount:组件销毁之前执行得钩子函数
组件在销毁得时候,先清除当前组件中得定时器或延迟器,然后清除当前组件中得事件监听,最后销毁当前得组件

7、组件得嵌套
涉及到子组件和父组件
实现网页布局:header、nav、content、footer
因为app是入口文件,所以直接再app这个入口文件中告诉它把所有得DOM都渲染到id为root得div中即可,其他得组件中就不需要写了

8、es6中我们讲到默认导出数据得话使用得是export default这个方法进行导出得,导入得话使用得是import导入得
现在我们这个页面再布局得时候里边又header、nav、content、footer这四个组件,组件话开发可以很好得达到组件得复用,哪个页面中使用,就直接再哪个页面中引入即可,不需要重新写这个组件了

9、那么对于当前得页面来说
Hello这个组件是父组件
其他得四个组件是子组件
如果存在子组件得话,那么生命周期得执行顺序是:
实例化期:先调用父组件中得componentWillMount,然后是子组件中得WillMount,子组件中得DidMount,父组件中得DidMount
生存期:
只重新渲染子组件:直接给子组件绑定事件改变state状态值,那么直接调用得是子组件中得生存期得钩子函数,父组件中生存期得钩子函数不会被调用
当重新渲染父组件得话,那么子组件也会被重新渲染,所以父组件得钩子函数和子组件得钩子函数会同时被调用

10、生命周期:
就是一个组件从显示到销毁得过程
组件来说它得生命周期分为三个时期:实例化期,生存期和销毁期
每一个时期都会调用不同得钩子函数,如果先要再不同得时期完成某些操作就是再这些钩子函数中完成得

再实例化期:
初始化属性static defaultProps和状态constructor(){this.state}进行初始化
之前:componentWillMount,再这个钩子函数中我们一般不会做任何操作,因为虚拟DOM和真实DOM都没有
render:会返回一个虚拟DOM
componentDidMount:DOM已经渲染在页面中了,已经是真实得DOM了,所以如果需要操作当前得DOM得话,直接写就可以了

生存期:只要是组件显示再页面中了,之后不管做什么操作,那么都是再生存期下完成的
componentWillReceiveProps:用来判断props属性是否改变得
shouldComponentUpdate:用来判断组件是否更新得,如果返回值是true就更新,之后得钩子函数也会执行,如果是false就不更新,之后得钩子函数就不执行
componentWillUpdate:更新之前执行得
render:因为再react中我们就是通过render这个方法来返回一个虚拟DOM得
componentDidUpdate:更新之后得钩子函数,因为之前调用过render方法,所以再这个钩子函数中就可以对DOM进行操作了

销毁期:
componentWillUnmount:销毁之前调用得钩子函数
组件再销毁得时候先清除组件中得定时器和延迟器,然后清除事件监听,随后销毁组件

11、shouldComponentUpdate:用来判断组件是否更新的一个方法
怎么判断一个组件是否被更新了,通过什么方法来判断:shouldComponentUpdate
怎么让DOM没改变的话不更新组件,在shouldComponentUpdate中让return的返回值是false即可

12、新的生命周期:16以后有的,没有废除旧生命周期的方法,但是新旧生命周期的方法不能同时使用
废除了:3个带Will的
componentWillMount
componentWillReceiveProps
componentWillUpdate
新增了两个:
getDerivedStateFromProps:会在初始化和Update时触发的,用于替换componentWillReceiveProps和componentWillMount,可以利用props更新state
它是一个静态方法,所以前边需要加上static,是获取不到实例this的,并且不能访问this.props,强制的让我们去比较nextProps(从父组件中传过来的属性值)和prevState(原有组件的存属性的值)中的值
getSnapshotBeforeUpdate:用于替换componentWillUpdate,会在update后DOM更新前被调用,用于读取最新的DOM数据的

13、在react中想要操作哪个组件就必须要给哪个组件加上操作得代码,像单机header组件,那么就需要在header组件中加上单机得事件和处理函数

14、getDerivedStateFromProps:替换WillMount和WillReceiveProps这两个钩子函数
有两个参数:nextProps(用来接收属性值得)和prevState(获取当前组件中状态值得),因为如果想要更新组件那么必须要改变状态才能达到组件得更新,属性是一个静态得,属性是不能变得,

15、getSnapshotBeforeUpdate:(使用场景:获取组件更新之前得滚动条位置)
触发时间:update发生得时候,在render之后(返回一个虚拟DOM),在组件DOM渲染之前
需要配合componentDidUpdate进行使用
componentDidUpdate有两个参数,这两个参数和getDeriverStateFromProps参数是一样得
这个钩子函数也有返回值,它的返回值会给componentDidUpdate得带三个参数中

2、react-生命周期1※※※的更多相关文章

  1. React生命周期

    在react生命周期中,分2段执行,一个挂载的生命周期,一个是组件发生了数据变动,或者事件触发而引发的更新生命周期. 注:react生命周期很重要,对于很多组件场景的应用发挥重要作用,而且不熟悉生命周 ...

  2. React 生命周期

    前言 学习React,生命周期很重要,我们了解完生命周期的各个组件,对写高性能组件会有很大的帮助. Ract生命周期 React 生命周期分为三种状态 1. 初始化 2.更新 3.销毁 初始化 1.g ...

  3. React生命周期详解

    React生命周期图解: 一.旧版图解: 二.新版图解: 从图中,我们可以清楚知道React的生命周期分为三个部分:  实例化.存在期和销毁时. 旧版生命周期如果要开启async rendering, ...

  4. React生命周期简单详细理解

    前言 学习React,生命周期很重要,我们了解完生命周期的各个组件,对写高性能组件会有很大的帮助. Ract生命周期 React 生命周期分为三种状态 1. 初始化 2.更新 3.销毁 初始化 1.g ...

  5. 22.1 、react生命周期(一)

    在每个react组件中都有以下几个生命周期方法~我们需要在不同阶段进行讨论 组件生命周期概述 1.初始化 在组件初始化阶段会执行 constructor static getDerivedStateF ...

  6. react 生命周期钩子里不要写逻辑,否则不生效

    react 生命周期钩子里不要写逻辑,否则不生效,要把逻辑写在函数里,然后在钩子里调用函数,否则会出现问题.

  7. react复习总结(2)--react生命周期和组件通信

    这是react项目复习总结第二讲, 第一讲:https://www.cnblogs.com/wuhairui/p/10367620.html 首先我们来学习下react的生命周期(钩子)函数. 什么是 ...

  8. React生命周期执行顺序详解

    文章内容转载于https://www.cnblogs.com/faith3/p/9216165.html 一.组件生命周期的执行次数是什么样子的??? 只执行一次: constructor.compo ...

  9. vue生命周期和react生命周期对比

    一 vue的生命周期如下图所示(很清晰)初始化.编译.更新.销毁 二 vue生命周期的栗子 注意触发vue的created事件以后,this便指向vue实例,这点很重要 <!DOCTYPE ht ...

  10. react生命周期知识点

    react生命周期知识点 一个React组件的生命周期分为三个部分:实例化.存在期和销毁时. 实例化 组件在客户端被实例化,第一次被创建时,以下方法依次被调用: 1.getDefaultProps2. ...

随机推荐

  1. 「雕爷学编程」Arduino动手做(24)——水位传感器模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  2. 5.8 Go 单元测试

    5.8 Go 单元测试 如果你不想后半生的美好时光都在寻找BUG中度过,那么必须写些程序用来检测产品代码的结果和预期的一样. Go语言的测试依赖于go test测试命令和一组按约定方式编写的测试函数, ...

  3. poj2455 k条路最小化最长边

    Secret Milking Machine Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12414   Accepted ...

  4. 【Java_集合框架Set】HashSet、LinkedHashSet、TreeSet使用区别

    HashSet:哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放: LinkedHashSet:以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代: Tree ...

  5. 【python爬虫】scrapy入门8:发送POST请求

    scrapy基础知识之发送POST请求与使用 FormRequest.from_response() 方法模拟登陆 https://blog.csdn.net/qq_33472765/article/ ...

  6. Java:成员变量、局部变量和静态变量

    梳理一下: 根据定义变量位置的不同,可以将变量分成两大类:成员变量和局部变量. 成员变量(俗称全局变量):在类里定义的变量.又分为实例变量和类变量(也成为静态变量). 实例变量:不以static修饰, ...

  7. golang垃圾回收机制

    golang的GC,1.8通过混合写⼊屏障, 使得STW降到了sub ms.go语言中程序代码执行和垃圾回收是并发执行的. 当前Go GC特征 :三色标记,并发标记和清扫,非分代,非紧缩,混合写屏障. ...

  8. 求最长非降(递增)子序列LIS的长度,及注意事项

    非降序列(Increasing Sequence)例如: (1) 完全递增型序列:S={1,3,6,7,9} (2) 部分存在等于的序列:S={1,3,3,6,9} S的非降子序列:由原序列S的元素组 ...

  9. 慕零的黑夜-头条-第二期(CSDN)[导读:] CSDN的15个bug&用户意见(很大) 作者:qq3461896724

    首先介绍CSDN: 相信"金山词霸,金山打字通"许多人都用过,而金山副总监 创办了  "全球最大中文IT技术平台,成就一亿技术人"的CSDN(Chinese s ...

  10. AD17无法复制原理图到Word的解决方法

    标题: 解决AD17无法复制原理图到WORD 作者: 梦幻之心星 347369787@QQ.com 标签: [AD, Word, 原理图] 目录: 软件 日期: 2019-3-17 目录 前提说明: ...