React js声明周期补充

阅读更多

关于组件的生命周期方法,需要特别注意每个方法的运行时间还有方法中需要填写的内容。

下为此前博客的补充:

 

初始化阶段:

  

     (1)render() :

           创建每个组件时, render()方法是必不可少的。如果该组件不需要渲染任何东西,也必须使render()返回 null或者false,此时当创建的组件应用到其它地方时,返回的是null。

           当组件的this.props和this.state改变时,render()方法被调用。所以该方法也属于运行时阶段方法。此外,绝对不能在render()方法中修改state的值,此时会造成render()方法调用的死循环,从而一直反复执行,占用着内存不释放。

 

      (2)getInitialState() :

            每个组件实例化时被调用,可以进行一些重要的运算,返回的值作为state的初始值,也就是返回值可以初始化组件的state。

 

      (3)getDefaultProps() : 

            与getInitialState()不同,每个组件只在第一次创建的时候调用一次,后面不管创建几个该组件实例,都不会再调用该方法。

            返回的值可以作为组件的props。但是这个props是该组件所有实例共享的。

 

       (4)componentWillMount() :

             初始化时,在render()之前调用一次,可以在里面修改state的值。

 

运行时阶段:

       

       (1)componentWillReceiveProps(object nextProps)

             组件接收到父组件新的props时调用。可以在这个方法中给state做更改。

             该方法不属于初始化阶段,组件初始化时并不会调用。所以在这里修改state之前,最好有一个state的初始值。

       

       (2)shouldComponentUpdate()

             当props和state改变时,在render()之前调用,如果某个时候,不想让render()执行来重新渲染组件,则让shouleComponentUpdate返回false即可。必须返回一个true或false。

 

       (3)componentWillUpdate()

             在shouldComponentUpdate()之后马上执行。但是不能在该方法中修改state,只能做一些准备工作。不需要返回值。

      

       

 

你可能感兴趣的:(React,js)