您的位置:首页 > Web前端 > React

React组件的生命周期

2018-03-27 17:20 501 查看
React的生命周期包括以下三部分:装载过程(Mount):把组件第一次在DOM树中渲染;
更新过程(Update):组件被重新渲染;
卸载过程(Unmount):把组件从DOM中删除;

1.装载过程

依次调用函数为:

constructor
getInitialState
getDefaultProps
componentWillMount
render
componentDidMount

1.1 constructor

    constructor为ES6中每个类的构造函数(并非每个组件都需要定义自己的构造函数,如无状态的React组件)。
    一般情况下构造函数的目的:①为了初始化state内容(组件生命周期中的任何函数都可能访问state);②绑定成员函数的this环境。如:
this.onClickFunc = this.onClickFunc.bind(this);    这条代码通过bind方法让当前实例中的onClickFunc函数被调用时,this始终指向当前组件实例。

1.2 getInitialState 和 getDefaultProps(不推荐再使用)

    getInitialState函数的返回值会用来初始化组件的this.state, 但是这个方法只有用React.createClass方法创建的组件类才会发生作用。

    getDefaultProps函数的返回值可以作为props的初始值,但同样的这个方法只有用React.createClass方法创建的组件类才会发生作用。

    因此以上这两个方法在ES6的方法定义的React组件中根本不会用到。
1.3 render
            React组件中最重要的函数。    
            render函数并不做实际的渲染动作,它只返回一个JSX(学习什么是JSX)描述的结构,最终由React来操作渲染过程。

            (特别的,若组件在某些情况下选择没有东西可渲染,那就让render函数返回一个null或者false。)

            render函数应该是一个纯函数[/u],完全根据this.state和this.props来决定返回的结果,而且不要产生任何副作用。
        在render函数中调用this.setState毫无疑问是错误的。

            *什么是纯函数(Pure Function):输入输出全是显式的,也就是函数与外界交换数据只有一个唯一渠道——参数和返
        回值;函数从函数外部接收的所有输入信息都通过参数传递到该函数内部;函数输出到函数外部的所有信息都通过返回值

        传递到该函数外部。

        1.4 componentWillMount 和 componentDidMount

               在装载过程中,componentWillMount会在调用render函数之前被调用,componentDidMount会在render函数之
        后被调用。也就是如图所示:

componentWillMountrendercompomemtDIdMount
                我们通常不定义componentWillMount(基本不使用)。

                render函数被调用完之后,componentDidMount函数并不是会被立刻调用。

2. 更新过程(不详细介绍)

更新过程会依次调用下面的函数:

componentWIllReceiveProps
shouldComponentUpdate
componentWillUpdate
render
componentDillUpdate

3.卸载过程

只涉及一个函数:componentWillUnmount
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  React