react生命周期

实例化

首次实例化segmentfault

  • getDefaultProps
  • getInitialState
  • componentWillMount
  • render
  • componentDidMount

实例化完成后的更新数组

  • getInitialState
  • componentWillMount
  • render
  • componentDidMount

存在期

组件已存在时的状态改变优化

  • componentWillReceiveProps
  • shouldComponentUpdate
  • componentWillUpdate
  • render
  • componentDidUpdate

销毁&清理期

  • componentWillUnmount

说明

生命周期共提供了10个不一样的API。this

1.getDefaultProps

做用于组件类,只调用一次,返回对象用于设置默认的props,对于引用值,会在实例中共享。code

2.getInitialState

做用于组件的实例,在实例建立时调用一次,用于初始化每一个实例的state,此时能够访问this.propscomponent

3.componentWillMount

在完成首次渲染以前调用,此时仍能够修改组件的state。对象

4.render

必选的方法,建立虚拟DOM,该方法具备特殊的规则:生命周期

  • 只能经过this.propsthis.state访问数据
  • 能够返回nullfalse或任何React组件
  • 只能出现一个顶级组件(不能返回数组)
  • 不能改变组件的状态
  • 不能修改DOM的输出

5.componentDidMount

真实的DOM被渲染出来后调用,在该方法中可经过this.getDOMNode()访问到真实的DOM元素。此时已可使用其余类库来操做这个DOM。事件

在服务端中,该方法不会被调用。get

6.componentWillReceiveProps

组件接收到新的props时调用,并将其做为参数nextProps使用,此时能够更改组件propsstate

componentWillReceiveProps: function(nextProps) {
        if (nextProps.bool) {
            this.setState({
                bool: true
            });
        }
    }

7.shouldComponentUpdate

组件是否应当渲染新的propsstate,返回false表示跳事后续的生命周期方法,一般不须要使用以免出现bug。在出现应用的瓶颈时,可经过该方法进行适当的优化。

在首次渲染期间或者调用了forceUpdate方法后,该方法不会被调用

8.componentWillUpdate

接收到新的props或者state后,进行渲染以前调用,此时不容许更新propsstate

9.componentDidUpdate

完成渲染新的props或者state后调用,此时能够访问到新的DOM元素。

10.componentWillUnmount

组件被移除以前被调用,能够用于作一些清理工做,在componentDidMount方法中添加的全部任务都须要在该方法中撤销,好比建立的定时器或添加的事件监听器。

更加详细的介绍:https://segmentfault.com/a/1190000004168886

相关文章
相关标签/搜索