组件的生命周期

组件的几种状态

作为一个有状态的组件,那么一定就是有生命周期的,一个有状态组件的生命周期如图1-1(组件的生命周期图片来源):

图1-1 组件的生命周期

由上图也可以看出组件一共有三种状态,分别是创建阶段,更新阶段,卸载阶段

组件的创建阶段:指组件初始化之后挂载到DOM上,主要执行的有:constructor,render,componentDidMount。

constructor: 组件被创建时,会首先调用组件的构造方法。这个构造方法会接受一个props参数,props是从父组件传过来的属性对象,如果父组件没有传入属性而组件自身定义了默认属性,那么这个props指向的就是组件的默认属性。(constructor通常用于初始化组件的state以及绑定事件处理函数等)

render:React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点。在这个方法中,根据组件的props和state返回一个React元素,用于描述组件的UI,通常React元素使用JSX语法定义。(render是纯函数,不能在里面执行this.setState,会有改变组件状态的副作用)

componentDidMount:组件挂载到DOM上会调用的函数,调用次数为1

组件的更新阶段:组件被挂载到DOM后,组件的props和state可以引起组件更新(组件重新被渲染的过程)。主要执行的有:shouldComponentUpdate,render、componentDidUpdate。

shouldComponentUpdate:该方法决定了组件是否需要更新,它通过比较nextProps,nextState和当前的props以及state,当函数返回true时当前组件将继续执行更新过程,返回false则当前组件更新停止。

componentDidUpdate:组件更新后调用,来操作更新后的DOM。

组件的卸载阶段:组件从DOM中卸载,主要执行的是:componentWillUnmount

componentWillUnmount:该方法在组件被卸载前调用,主要是清理一些资源,比如清除组件中使用的定时器,清除componentDidMount中手动创建的DOM元素等,以避免引起内存泄露。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容