react生命周期

时间秒杀一切 提交于 2020-03-01 01:29:11

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元素等,以避免引起内存泄露。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!