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. UGUI batch 规则和性能优化

    UGUI batch 规则和性能优化 (基础) Unity 绘图性能优化 - Draw Call Batching : http://docs.unity3d.com/Manual/DrawCallB ...

  2. C# 编写通用的JSON数据进行序列化和反序列化

    注意事项:使用JSON系列化和反系列化,必须要添加引用System.Runtime.Serialization. 1.通用类代码如下: /// <summary>    /// JSON序 ...

  3. C# 程序只能执行一次

    应用程序的主入口点. //每一个程序只能运行一个实例 bool isRun = false; System.Threading.Mutex m = new System.Threading.Mutex ...

  4. 在Winfrom下实现类似百度、Google搜索自能提示功能

    前记:数据源来自页面的一个ComboBox的数据源List<Contract>集合 页面放置一个TextBox(搜索框).ListBox(显示搜索出来的数据),ListBox位置位于Tex ...

  5. 记一次企业级爬虫系统升级改造(五):基于JieBaNet+Lucene.Net实现全文搜索

    实现效果: 上一篇文章有附全文搜索结果的设计图,下面截一张开发完成上线后的实图: 基本风格是模仿的百度搜索结果,绿色的分页略显小清新. 目前已采集并创建索引的文章约3W多篇,索引文件不算太大,查询速度 ...

  6. JS消化理解

    JS执行的时候是必须在网页里面执行,和样式表差不多,也是内嵌的样式表,嵌在网页里面或外部的! 一 嵌在网页里面怎么嵌? 如果你想在网页里面嵌脚本,你需要在网页里面打出一块区域,这块区域来写脚本,在写样 ...

  7. Socket-IOS

    Socke Socket又称"套接字” 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 应用程序通常通过"套接字"向网络发出请 ...

  8. 解决使用Idea/Eclipse编写Hadoop程序包依赖问题

    解决使用Idea/Eclipse编写Hadoop程序包依赖问题 解决包依赖的一种简单粗暴方法就是, 把下载下来的Hadoop压缩包解压, 搜索里面所有的额jar包文件,然后复制到一个目录,在使用Ide ...

  9. webpack 学习心得(一)

    Webpack 是一个模块打包器.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 因为本人也正在学习webpack ,所以此篇文章比较入门. 首先你想使用webp ...

  10. cordova调用本地SQLite数据库的方法

    第一篇技术博客,写下来和大家分享今天所学,其次自己也巩固一下. 整个下午的时间用来钻研如何用cordova调用移动端本地SQLite数据库.首先我并不是用eclipse来编程的,而是用cordova建 ...