React(3)--组件的生命周期

我们正式开始 React 的学习


我们先看一下 React 的一个简单的例子:

//引入React
import React from 'react';
import ReactDom from 'react-dom';

//Example组件
const Example = React.createClass({
    render : function(){
        <div className="content">
            {this.props.children}
        </div>
    }
});

//加载Example组件
ReactDom.render{(
    <div>
        <Example>
            <span>简单用例</span>
        </Example>
    </div>,
    document.getElementById('app');
)};

/**注解:
 **
 **  把Example加载到 id 为 app 的 DOM 节点下
 **  ReactDOM.render 是 React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点。
 **  React.createClass 方法就用于生成一个组件类
 **/

我是有点 React 基础的,如果刚接触 React 我建议可以看看 阮一峰的React日志,写的非常好,而我写来只是一种学习方式,用来积累学习、总结熟悉 React 知识。在此,如果有错、不合理的地方希望指点我,谢谢大家。


React 组件的生命周期

一、 组件生命周期的 3 个状态:

  1. Mounting(已插入真实 DOM)
  2. Updating(正在被渲染)
  3. Unmounting(已移出真实 DOM)


React 组件生命周期的方法:

*官方文档

实例化:每当新的组件被创建、首次渲染时
存在期:组件渲染完毕,并且用户可以与它进行交互
销 毁:React使用完组件,它必须从 DOM 中卸载随后被销毁

阶段方法说明
实例化getDefaultProps作用于组件类,只调用一次,返回对象用于设置默认的props,
对于引用值,会在实例中共享。
getInitialState作用于组件的实例,在实例创建时调用一次,用于初始化每个实例的state,
此时可以访问this.props。
componentWillMount在完成首次渲染之前调用,render方法调用前最后一次机会修改组件的state。



render
必选的方法,创建虚拟DOM,用来表示组件输出。
 该方法具有特殊的规则:
 → 1. 只能通过this.props和this.state访问数据
 → 2. 可以返回null、false或任何React组件
 → 3. 只能出现一个顶级组件(不能返回数组)
 → 4. 不能改变组件的状态
 → 5. 不能修改DOM的输出
componentDidMount在第一次渲染后调用,只在客户端。之后组件已经生成了对应的DOM结构,
可以通过 this.getDOMNode() 来进行访问。
如果你想和其他JavaScript框架一起使用,可以在这个方法中调用setTimeout,
setInterval或者发送AJAX请求等操作(防止异部操作阻塞UI)。
存在期componentWillReceiveProps组件接收到新的props时调用,
并将其作为参数nextProps使用,此时可以更改组件props及state。
shouldComponentUpdate组件是否应当渲染新的props或state,
返回false表示跳过后续的生命周期方法,通常不需要使用以避免出现bug。
在出现应用的瓶颈时,可通过该方法进行适当的优化。
componentWillUpdate接收到新的props或者state后,进行渲染之前调用,
此时不允许更新props或state。
componentDidUpdate完成渲染新的props或者state后调用,此时可以访问到新的DOM元素。
销毁期componentWillUnmount组件被移除之前被调用,可以用于做一些清理工作,
在componentDidMount方法中添加的所有任务都需要在该方法中撤销,
比如创建的定时器或添加的事件监听器。


参考:React生命周期

→ 例解:

getDefaultProps、getInitialState区别:前者对组件类,后者对实例

列解

我们可以写个简单的例子来验证,但由于时间关系,我看可以看看下面的例子:例子

验证很简单,但如何活用 React 组件的生命周期方法呢?这也是我在学习和探讨的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值