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. 动态添加DOM时,绑定的click事件会重复执行

    最近因为业务需求,需要重写window的alert和confirm弹窗,但是每次显示的提示按钮不相同,所有每次打开的弹窗都需要重写生成,但是对于相同的按钮会保留上次创建时的click事件,所以当你创建 ...

  2. Windows, Eclipse下开发Heritrix 3.1 (一)环境搭建

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  3. Test-NetConnection

    有了PowerShell 4.0,排除网络故障的日子就会轻松很多.Test-NetConnection cmdlet将多个测试整合到了一个简单的有几个参数的命令当中.例如,命令Test-NetConn ...

  4. [caffe]深度学习之图像分类模型VGG解读

    一.简单介绍 vgg和googlenet是2014年imagenet竞赛的双雄,这两类模型结构有一个共同特点是go deeper.跟googlenet不同的是.vgg继承了lenet以及alexnet ...

  5. .ssh 文件夹权限设置问题

    .ssh 文件夹权限 问题 今天遇到了 关于.ssh 文件夹夹 设置什么权限合适问题 :答案是 700 chmod 700 .ssh

  6. kcachegrind gui for callgrind

    DocumentationScreenshotsDownload/SourcesLinksRoadmapBugs & Wishes This is the homepage of the pr ...

  7. stoi的例子

    9.51 设计一类,它又三个unsigned成员,分别表示年月日.为其编写构造函数,接受一个表示日期的string参数. 程序如下: #include<iostream> #include ...

  8. SAXParser 解析器和 XMLEventReader(读取XML文档)

    import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import java ...

  9. oracle学习----行级锁的理解

    通过实验来理解行级锁的发生 1.创建需要的表 SQL> conn / as sysdba已连接.SQL> create table dept as select * from scott. ...

  10. Verilog-1995 VS Verilog-2001

    http://www.cnblogs.com/tshell/p/3236476.html 2001年3月IEEE正式批准了Verilog‐2001标准(IEEE1364‐2001),与Verilog‐ ...