1)构造函数
不会因为props的改变而重新执行,每一个组件的构造器仅仅会执行一次。
2)生命周期函数:
①componentWillMount、componentDidMount:
上树之前、上树之后。都只执行一次,不会因为props改变而执行
②shouldComponentUpdate:决定组件是否要被更新。
该方法在初始化渲染的时候不会调用,而是在props改变或者state被改变的时候执行,此时可以返回true、false来决定视图与否。
特别注意,这个生命周期收到两个参数,nextProps和nextState。所以此时就可以根据nextProps和现在的情形比较来决定视图是否更新。一般的,这里面不设置state,因为是设置state而引发的这个函数执行。
③componentWillUpdate、componentDidUpdate:
组件更新之前、之后执行的。如果shouldComponentUpdate返回了false,此时这两个生命周期都不会执行。
该方法在初始化渲染的时候不会调用,而是在props改变或者state被改变的时候执行。接受两个参数,nextProps和nextState。这里不能设置state,否则导致死循环。
④componentWillReceiveProps :组件接受了新的参数的时候使用。
需要注意的是,提供一个实参,就是新props。nextProps才是新参数,而this.props是老参数。
4) render函数:三兄弟的改变一定会重新使render函数执行。再次强调,有connect的函数和没有connect的函数分开看。
constructor
componentWillMount //上树之前,只执行一次,不会因为props改变而执行
render
componentDidMount //上树之后,只执行一次,不会因为props改变而执行
componentWillReceiveProps //组件接受了新的参数的时候使用。
//提供一个实参,就是新props。
nextProps才是新参数,而this.props是老参数。`
shouldComponentUpdate //决定组件是否要被更新。初始化渲染的时候不会调用,而是在props改变或者state被改变的时候执行
componentWillUpdate //组件更新之前,初始化渲染的时候不会调用,而是在props改变或者state被改变的时候执行。
render
componentDidUpdate //组件更新之后,初始化渲染的时候不会调用,而是在props改变或者state被改变的时候执行。