• 初始化 ReactDOM.render(jsx, 原生 DOM 对象)

组件类定义

static defaultProps = {}

static propTypes = {}

constructor(props){...}

componentWillMount()    // 只执行一次,初始化数据

render()    // 第一次调用,渲染界面

componentDidMount()    // 只执行一次,执行异步代码

  • 更新 this.setState({...})

componentWillUpdate()

render()    // 每当状态机的数据改变都会自动调用

componentDidUpdate()

  • 死亡 ReactDOM.unmountComponentAtNode()

componentWillUnmount()    // 将要卸载组件之前

React_生命周期

一个对象从生到死的过程

  • Mounting :已插入真实 DOM
  • Updating :正在被重新渲染
  • Unmounting :已移出真实 DOM
  • getInitialState() --------已经废弃了!!!

用于初始化组件状态

在组件挂载之前调用一次。返回值将会作为 this.state的初始值

  • getDefaultProps -------- 好像也废弃了。

用于设置组件的 state 中 属性的默认值

在组件类创建的时候调用一次,然后返回值被缓存下来。

如果父组件没有指定 props 中的某个键,则此处返回的对象中的相应属性将会合并到 this.props (使用 in 检测属性)

  • getDefaultProps() {
    return {
    title: '',
    popEnabled:true
    };
    },
  • propTypes

验证传入到组件的 props

  • isMounted()

当组件被渲染到 DOM,该方法返回 true,否则返回 false

该方法通常用于异步任务完成后修改 state 前的检查,以避免修改一个没有被渲染的组件的 state

  • 什么时候调用 render()
  • 初始显示第一次调用
  • 一旦钓鱼用 this.setState() 更新了状态

当该方法被回调的时候,会检测 this.props 和 this.state,并返回一个单子级组件。

该子级组件可以是虚拟的本地 DOM 组件

也可以返回 null 或者 false 来表明不需要渲染任何东西: 此时 this.getDOMNode() 将返回 null

  • 生命周期回调函数 (钩子)

在整个生命过程中某个特定时刻会自动调用相应的回调函数 (来通知你)

  • 通过重写 以下方法,初始化

第一次 render() 之前,执行一次

componentWillMount()    // 一般在此 准备数据

第一次 render() 之后,执行一次

componentDidMount()    // 执行异步代码 (定时器)

重写以下方法,在组件移除之前,清除定时器

componentWillUnmount()

  • 卸载一个节点的 react 组件实例

ReactDOM.unmountComponentAtNode(document.getElementById(""));

React_生命周期的更多相关文章

  1. react组件的生命周期

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

  2. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  3. C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)

    本文是根据网上的文章总结的. 1.介绍 本文讨论ASP.Net MVC框架MVC的请求生命周期. MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期. 2.应用程序生命周期 应用程序生命周期 ...

  4. UIViewController生命周期-完整版

    一.UIViewController 的生命周期 下面带 (NSObject)的方法是NSObject提供的方法.其他的都是UIViewController 提供的方法. load   (NSObje ...

  5. angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation

    今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:

  6. Spring中Bean的作用域、生命周期

                                   Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...

  7. Autofac - 生命周期

    实例生命周期决定在同一个服务的每个请求的实例是如何共享的. 当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), 一个新的对象 (per lifetime作用 ...

  8. 【微信小程序开发•系列文章六】生命周期和路由

    这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程 ...

  9. Xamarin.Android活动的生命周期

    一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没有丢失.可以看出app的“生命”是掌握在系统手上的, ...

随机推荐

  1. Entity Framework入门教程(15)---DbContext追踪实体状态改变

    这一节介绍DbContext追踪实体的变化.EF支持DbContext在其生命周期中自动追踪加载的实体.我们可以通过DbChangeTracker类获取DbContext追踪的所有实体的变化. 注意每 ...

  2. mysql递归

    sql Server可以用with as 语法,mysql没有这个功能,只能用别的方式了,目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,还是可以在一句SQL内实现树的递归 ...

  3. Angular记录(2)

    文档资料 箭头函数--MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_fun ...

  4. 第五节:Task构造函数之TaskCreationOptions枚举处理父子线程之间的关系。

    一. 整体说明 揭秘: 通过F12查看Task类的源码(详见下面的截图),发现Task类的构造函数有有一个参数为:TaskCreationOptions类型,本章节可以算作是一个扩展章节,主要就来研究 ...

  5. Android应用程序国际化

    前情提要 在Android应用程序中, 可以轻松更改语言, 以适应国际化标准 一些用户拥有多种语言习惯, 因此, 应用程序不能依赖设备默认语言环境, 必须提供更改显示语言的程序功能 本文章探寻持久化语 ...

  6. 树链剖分详解(洛谷模板 P3384)

    洛谷·[模板]树链剖分 写在前面 首先,在学树链剖分之前最好先把 LCA.树形DP.DFS序 这三个知识点学了 emm还有必备的 链式前向星.线段树 也要先学了. 如果这三个知识点没掌握好的话,树链剖 ...

  7. PCA,到底在做什么

    很久以前写过一篇 PCA 的小白教程,不过由于当时对 PCA 的理解流于表面,所以只是介绍了一下 PCA 的算法流程.今天在数图课上偶然听到 PCA 在图像压缩上的应用,突然明白了一点实质性的东西,这 ...

  8. 【easy】367. Valid Perfect Square 判断是不是平方数

    class Solution { public: bool isPerfectSquare(int num) { /* //方法一:蜜汁超时…… if (num < 0) return fals ...

  9. iOS 中的屏幕旋转shouldAutorotate和supportedInterfaceOrientations的先后关系

    这2个UIViewController的属性,都和旋转相关, 当设备发生旋转时,首先会查看根controller的shouldAutorotate是否允许旋转,如果允许,再通过 supportedIn ...

  10. jqGrid合并单元格

    两个参数 /**合并单元格:合并指定 gridName表格的NoName 列,合并的标准是参考CellName+CellNameTwo列内单元格的值. * gridName :表格名称 * NoNam ...