1. 组件的生命周期
    1. 过程
      1. 装载(Mounting) :组件被插入到 DOM 中;
      2. 更新(Updating) :组件重新渲染以更新 DOM;
      3. 卸载(Unmounting) :组件从 DOM 中移除。
    2. 过程
      1. 包含 will 的方法在某个时间节点之前执行
      2. 包含 did 方法在某个时间节点 之后 执行
    3. 三个阶段(按调用顺序
      1. 实例化(装载)
    1. getDefaultProps(在任何实例创建之前执行,不在装载阶段执行
      1. 该方法在 组件创建时( createClass )执行一次并缓存返回值。
      2. 如果组件使用时未设置属性,就从缓存中读取默认属性。
      3. getDefaultProps() 返回的缓存数据会在所有实例间共享。
    2. getInitialState
      1. 组件装载之前执行一次,返回值用作 this.state 的初始值。
    3. constructor
      1. 构造器。
      2. super();//第一行必须是这个。调用父组件的构造器。
      3. this.state = {......};//初始化实例的属性和组件的状态。
    4. componentWillMount
      1. 在完成首次渲染之前被调用。
    5. render(必需
      1. 创建一个虚拟DOM
      2. 只能通过this.props和this.state访问数据
      3. 可以返回null,false或者react组件
      4. 只能有一个顶级组件
    6. componentDidMount
      1. 真实的DOM已经被渲染之后调用
      2. 可以访问原始DOM,如测量渲染出DOM元素的高度,或用计时器操作它
      3. 此方法中可进行
        1. 与其他 JavaScript 框架集成,如初始化 jQuery 插件;
        2. 使用 setTimeout / setInterval 设置定时器;
        3. 通过 Ajax/Fetch 获取数据;
        4. 绑定 DOM 事件;
  • 存在期(更新)
      1. componentWillReceiveProps(state改变时,不调用
        1. 组件的props发生改变时才调用(任意时刻,组件的props都可以通过父辈组件来更改
        2. 函数内可以更改props对象及更新state
        3. 此时props并没有改变,通过this.prop获取到的仍是还没有更改的
      2. shouldComponentUpdate
        1. componentWillReceiveProps调用后调用
        2. 首次渲染或调用了forceUpdate方法后不调用
      3. componentWillUpdate
        1. 组件会在接收到新的props或state进行渲染前,调用该方法
        2. 该方法中不可以更新state或props
        3. 此时props并没有改变,通过this.prop获取到的仍是还没有更改的
      4. render
      5. componentDidUpdate
        1. 更新渲染好的DOM
        2. 此处获取到的是改变后的props
    • 销毁&清理期(卸载)
      1. componentWillUnmount
      2. 需要撤销componentDidMount中添加的所有任务,如:定时器、事件监听
  • 反模式
    1. 尝试在constructor中通过this.props来创建state是一种反模式
    2. 从prop中计算然后将它赋值为state的做法也是一种反模式
    3. 正确模式应该是在渲染时,计算这些值
    4. 保证计算后的值永远不会与派生出它的props值不同步

react 组件的生命周期的更多相关文章

  1. 2. React组件的生命周期

    2. React组件的生命周期 使用React开发时候用到最多的就是React的组件了,通过继承React.Component,加入constructor构造函数,实现Render方法即可.这当中Re ...

  2. React 组件的生命周期方法

    React 组件的生命周期方法 按渲染顺序: 1: componentWillMount() – 在渲染之前执行,在客户端和服务器端都会执行. 2: componentDidMount() – 仅在第 ...

  3. react第三单元(react组件的生命周期)

    第三单元(react组件的生命周期) #课程目标 灵活掌握react组件的生命周期以及组件的活动过程. 能够灵活使用react的生命周期 #知识点 react的类组件的生命周期分为三个阶段 实例期 存 ...

  4. React组件和生命周期简介

        React 简介----React 是 Facebook 出品的一套颠覆式的前端开发类库.为什么说它是颠覆式的呢? 内存维护虚拟 DOM 对于传统的 DOM 维护,我们的步骤可能是:1.初始化 ...

  5. 理解React组件的生命周期

    本文作者写作的时间较早,所以里面会出现很多的旧版ES5的时代的方法.不过,虽然如此并不影响读者理解组件的生命周期.反而是作者分为几种不同的触发机制来解释生命周期的各个方法,让读者更加容易理解涉及到的概 ...

  6. React: React组件的生命周期

    一.简介 在前面的第二篇博文中对组件的生命周期虽然做了一个大略介绍,但总感觉说的过于简单,毕竟生命周期是React组件的核心部分.在我们熟练使用React挂载和合成组件来创建应用表现层的过程中,针对数 ...

  7. react 组件的生命周期 超简版

    组件从被创建到被销毁的过程称为组件的 生命周期: 通常,组件的生命周期可以被分为三个阶段:挂载阶段.更新阶段.卸载阶段: 一.挂载阶段 这个阶段组件被创建,执行初始化,并被挂载到DOM中,完成组件的第 ...

  8. react组件的生命周期

    写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...

  9. React 组件的生命周期API和事件处理

    一.简单记录React的组件的简洁的生命周期API: A:实例化期: 一个实例第一次被创建时所调用的API与其它后续实例被创建时所调用的API略有不同. 实例第一次被创建时会调用getDefaultP ...

随机推荐

  1. CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14方法分享

    一.配置防火墙,开启80端口.3306端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...

  2. Python中执行系统命令常见的几种方法--转载

    Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执 ...

  3. Android3.0 以前的Fragment支持

    Fragment非常实用,Android也为3.0以前的平台增加了Fragment支持,只是该Fragment不是继承android.app.Fragment,而是继承android.support. ...

  4. HTML 布局

    网站布局 大多数网站会把内容安排到多个列中(就像杂志或报纸那样). 大多数网站可以使用 <div> 或者 <table> 元素来创建多列.CSS 用于对元素进行定位,或者为页面 ...

  5. Eclipse设置Tab键为空格!

    http://z-hua.iteye.com/blog/1056713 今天设置Eclipse中按Tab键为4个空格,这里标记下! Window-->Preferences-->Java- ...

  6. Hadoop权威指南:通过distcp并行复制

    Hadoop权威指南:通过distcp并行复制 distcp是一个分布式复制程序,改程序可以从Hadoop文件系统间复制大量数据,也可以将大量的数据复制到Hadoop中 distcp的典型应用是在两个 ...

  7. CSS实现的几款不错的菜单栏

    前言 自从做了智慧城市这个项目之后,我一个做后端的开发者,瞬间转为前端开发,不过我还是很喜欢前端的.前端那些事,其实蛮有意思的,HTML实现的是静态的,使用ajax之后就可以和数据库交互了,加上js和 ...

  8. java版二叉树算法实现

    import java.util.ArrayList; class BinaryTree { private static class TreeNode { int data; TreeNode le ...

  9. javascript this的一些误解

    太拘泥于"this"的字面意思就会产生一些误解.有两种常见的对于this 的解释,但是它们都是错误的. 1.指向自身 人们很容易把this 理解成指向函数自身,这个推断从英语的语法 ...

  10. Ninject之旅目录

    第一章:理解依赖注入 Ninject之旅之一:理解DI 第二章:开始使用Ninject Ninject之旅之二:开始使用Ninject(附程序下载) Ninject之旅之三:Ninject对象生命周期 ...