关于组件的生命周期方法,需要特别注意每个方法的运行时间还有方法中需要填写的内容。
下为此前博客的补充:
初始化阶段:
(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,只能做一些准备工作。不需要返回值。