react小记 组件的生命周期
react组件的生命周期,分为三个过程:
1,装载过程(mount),也就是把组件第一次在DOM中渲染的过程,
2,更新过程(update),当组件被重新渲染的过程,
3,卸载过程(unMount),组件从DOM中删除的过程。
三种不同的过程,React库会依次调用组件的一些成员函数,这些函数称为生命周期函数。所以要定制一个React组件,实际就是定制这些生命周期函数。
装载过程,当组件第一次被渲染的时候,依次调用的函数如下:
constructor,getInitialState,getDEfaultProps,componentWillMount,render,componentDidMount
优化:在render函数中调用this.setState毫无疑问是错误的,因为一个纯函数不应该引起状态的改变。
装载过程:
componentWillMount和componentDidMount这对兄弟函数还有一个区别,就是coponentWillMount可以在服务器端被调用,也可以在浏览器端被调用。而componentDidMount只能在浏览器端被调用,在服务器端使用React的时候不会被调用。
更新过程:
更新过程会依次调用下面的生命周期函数,其中render函数和装载过程一样,没有差别。
componentWillReceiveProps
shouldComponentUpdate
componentWillUpdate
render
componentDidUpdate
1,componentWillReceiveProps,只要是父组件的render函数被调用,在render函数里面被渲染的子组件就会经历更新过程,不管父组件传给自组件的props有没有改变,都会触发子组件的componentWillReceiveProps函数。
通过this.setState方法触发的更新过程不会调用这个函数,这是因为这个函数适合根据新的props值来计算出是不是要更新内部状态state。