react 的核心除了虚拟DOM,我想还有一个很重要的就是生命周期函数,理解生命周期函数,对写出合理的commponet很有帮助。下面总结一下我对生命周期函数的一些理解已经在项目过程中遇到的一些问题。

先上一张图:

1、getIntialState()方法

这个方法在组件没有mouting之前调用,在这个方法中可以初始化一些数据,例如state。这个方法在组件创建的时候调用一次,之后就不会再被调用了,除非组件销毁,重新创建。

在这个方法中已经可以访问到this.props了。

2、componentWillMount()方法

这个方法在组件已经即将创建但是还没有创建的时候调用,在这里可以用setState修改state。但是react建议是在组件mouted以后调用setState函数,否则容易报警告。这点在介绍state的时候在详细分析。

3、render方法

这个方法是react组件唯一必需的函数,这个方法用于创建虚拟DOM。

这个方法里数据只能通过this.state和this.props输出。

要注意一点返回的组件必须有一个顶级的组件,也就是说所有的标签必须被一个父标签包裹。

4、componentDidMount()方法

这个方法中可以调用Rect.findDOMNode()方法,访问Dom节点(注:在react 0.13版本中用this.getDOMNode()方法而且返回的是虚拟DOM,不能直接访问DOM节点)

访问DOM节点时,react 提供了refs对象,可以同个refs对象直接访问到相应的节点上:

例如:

<div ref='app'></div>

可以通过Rect.findDOMNode(this.refs.app)直接访问到div节点

5、componentWillReciveProps(object nextProps)方法

这个方法可以接受到this.props的更新,所以可以在这个方法中,可以更新组件。但是在这个方法中使用setState函数是不会触发render()方法的。

这个方法在使用react-router时,可以实现类似于从路由/feed/123 to /feed/789的组件数据更新。

  ps:方法在组件intial的时候不会被调用

6、shouldComponentUpdate()方法

这个方法可以用来精准判断是否更新组件,你可以通过判断this.prop和this.state是否需要渲染更新,来返回false或者true。如果返回的是false则react会跳过render方法,以及render方法的前后两个方法。所以使用这个方法是要谨慎,容易导致整个页面无法渲染。

7、componentWillUpdate()方法

组件在接受到新的this.props或者this.state前调用该方法。在这个方法中不能调用setState方法更新state或者更新this.props。

8、componentDidUpdate()方法

该方法可以更新已经渲染好的DOM结构

9、componentWillUnmount()方法

这个方法主要用来做一些垃圾回收的工作,但是由于浏览器的垃圾自动回收机制,所以基本上不需要使用这个方法。

10、mixin

在创建组件的过程中有很多方法是在多个组件中共用,如果在每个组件中都重复定义一遍,太麻烦,这个时候可以使用mixin。mixin允许我们重复定义生命周期函数。mixin中的生命周期函数会先于组件自己的生命周期函数调用。

react组件什么周期记录,转的的更多相关文章

  1. React组件生命周期小结

    React组件生命周期小结 下面所写的,只适合前端的React.(React也支持后端渲染,而且和前端有点小区别,不过我没用过.) 相关函数 简单地说,React Component通过其定义的几个函 ...

  2. React—组件生命周期详解

    React—组件生命周期详解 转自 明明的博客  http://blog.csdn.net/slandove/article/details/50748473 (非原创) 版权声明:转载请注明出处,欢 ...

  3. 野心勃勃的React组件生命周期

    当你还在写着Angular指令,过滤器,注入,服务,提供者,视图模版的时候,是不是觉得很烦,好在这个时候,React已经神一样的出现在历史舞台. React组件    React实现了UI=Fn(St ...

  4. React组件生命周期过程说明

    来自kiinlam github94 实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidM ...

  5. React组件生命周期过程说明【转】

    实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getI ...

  6. 深入React组件生命周期

    上篇博文使用React开发的一些注意要点对React开发的一些重点进行了简单的罗列总结,虽然也提到了React生命周期,但只略微小结,在此单独写篇React生命周期的总结. 在组件的整个生命周期中,随 ...

  7. react组件生命周期过程

    实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getI ...

  8. 1.4 React 组件生命周期

    1.4.1 组件 React 中组件有自己的生命周期方法,简单理解可以为组件从 出生(实例化) -> 激活 -> 销毁 生命周期 hook.通过这些 hook 方法可以自定义组件的特性. ...

  9. 3. React 组件生命周期介绍

            React 中的每个组件都有三个阶段,这三个阶段构成了组件完整的生命周期.组件的生命周期为]); return; } this.setState({name: event.target ...

随机推荐

  1. Go语言简介

    Go语言简介 - Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的编程效率. Go语言简介 Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的编程效率. Go ...

  2. 对css中的浮动属性float刨根解牛

    1.浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 脱离常规流,由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样. 2.几张图说明浮动常 ...

  3. 你知道用AngularJs怎么定义指令吗?

    前言 最近学习了下angularjs指令的相关知识,也参考了前人的一些文章,在此总结下. 欢迎批评指出错误的地方.   Angularjs指令定义的API AngularJs的指令定义大致如下 ang ...

  4. JAVA Web 之 struts2文件上传下载演示(二)(转)

    JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...

  5. 文件和目录之chdir、fchdir和getcwd函数

    每个进程都有一个当前工作目录,此目录是搜索所有相对路径名的起点(不以斜杠开始的路径名为相对路径名).当用户登录到UNIX系统时,其当前工作目录通常是口令文件(/etc/passwd)中该用户登录项的第 ...

  6. Interesting visualization tools for profiling.

    Interesting visualization tools for profiling. http://dtrace.org/blogs/brendan/2012/03/17/linux-kern ...

  7. Android开发之处理崩溃异常

    众所周知,android的设备千差万别,难免会发生崩溃异常等现象,这个时候就需要捕获哪些崩溃异常了,也就是捕获崩溃异常的相关信息,并记录下来,这样一来方便开发人员和测试人员的分析与调试. 1.首先我们 ...

  8. JAVA_基础面试题

    1.面向对象的特征有哪些方面   1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽 ...

  9. create---创建表

    create table table_name (列名 数据类型 是否非空 约束信息, 列名 数据类型 是否非空 约束信息, 列名 数据类型 是否非空 约束信息, ........); 例: crea ...

  10. ffmpeg之YUYV转RGB ARM使用流程分析

    本例基于3.2.2 ffmpeg 一.应用调用API 二.头文件包含的API接口 对应于libswscale.so.libswscale.so.4.libswscale.so.4.2.100中 sws ...