React组件的生命周期分为三个阶段:
1.组件初始化 Mounting
2.组件运行时 Updating
3.组件卸载时 Unmounting
组件初始化
1.constructor()
constructor()中完成了React数据的初始化,它该构造方法接受一个props参数,必须在方法中首先调用super(props)才能保证props被传入组件中。
注意:只要使用了constructor()就必须写super(),否则会导致this指向错误。
2.componentWillMount()
组件渲染之前调用,只会被调用一次。在这个方法里setState不生效,不会触发re-render,而是会进行state合并。实际开发中很少用这个方法,因为都可以放到constructor()中来处理
组件运行时
3.componentDidMount()
组件第一次渲染完成,此时dom节点已经生成,可以在这里调用ajax请求,返回数据setState后组件会重新渲染
4.componentWillReceivePorps(nextProps)
组件初始化时不调用,组件就接收新props时调用,该函数接收一个props,为接收到的参数
5.shouldComponentUpdate(nextProps, nextState)
组件接受新的state或者props时调用,我们可以设置在此对比前后两个props和state是否相同,如果相同则返回false阻止更新,因为相同的属性状态一定会生成相同的dom树,这样就不需要创造新的dom树和旧的dom树进行diff算法对比,节省大量性能,尤其是在dom结构复杂的时候。
6.componentWillUpdata(nextProps, nextState)
组件初始化时不调用,只有在组件将要更新时才调用,此时可以修改state
7.componentDidUpdate()
组件初始化时不调用,组件更新完成后调用
组件卸载时
8.componentWillUnmount
该方法在组件卸载之前调用,可以在这里执行一些清理工作,如清楚组件中的定时器,取消某些网络请求,清除componentDidUpdate手动创建的DOM元素等,以避免引起内存泄露。
来源:CSDN
作者:__浩
链接:https://blog.csdn.net/weixin_43989338/article/details/104581551