简述一下组件的生命周期

简介: 在进行组件化项目开发的时候都会存在一个组件的生命周期概念,像Vue、React、小程序等等,无一例外,而通常情况组件的生命周期主要分成三个阶段,包括:创建、更新以及销毁阶段。

在进行组件化项目开发的时候都会存在一个组件的生命周期概念,像Vue、React、小程序等等,无一例外,而通常情况组件的生命周期主要分成三个阶段,包括:创建、更新以及销毁阶段。


Vue的生命周期钩子函数主要包括:

  1. beforeCreate(): 在实例初始化之后调用, data和methods都还没有初始化完成, 通过this不能访问
  2. created(): 此时data和methods都已初始化完成, 可以通过this去操作, 可以在此发ajax请求
  3. beforeMount(): 模板已经在内存中编译, 但还没有挂载到页面上, 不能通过ref找到对应的标签对象
  4. mounted(): 页面已经初始显示, 可以通过ref找到对应的标签, 也可以选择此时发ajax请求
  5. beforeUpdate(): 在数据更新之后, 界面更新前调用, 只能访问到原有的界面
  6. updated(): 在界面更新之后调用, 此时可以访问最新的界面
  7. beforeDestroy(): 实例销毁之前调用, 此时实例仍然可以正常工作
  8. destroyed(): Vue 实例销毁后调用, 实例已经无法正常工作了
  9. deactivated():组件失活, 但没有死亡
  10. activated(): 组件激活, 被复用
  11. errorCaptured(): 用于捕获子组件的错误,return false可以阻止错误向上冒泡(传递)

我们通常在created()/mounted()进行发送ajax请求,启动定时器等异步任务,而在beforeDestory()做收尾工作,如: 清除定时器操作。


不过需要注意的是mounted生命周期钩子中并不代表界面已经渲染成功,因为 mounted 不会保证所有的子组件也都一起被挂载。如果你希望等到整个视图都渲染完毕,可以在 mounted 内部使用 vm.$nextTick。


Vue的生命周期钩子函数又分为了:单个组件生命周期、父子组件的生命周期、带缓存的路由组件生命周期等不同的状态,在不同的状态下所拥有的生命周期内容是不相同的。


单个组件生命周期

初始化:

  • beforeCreate
  • created
  • beforeMount
  • mounted

更新:

  • beforeUpdate
  • updated

销毁:

  • beforeDestroy
  • destroyed

父子组件的生命周期

初始化:

  • beforeCreate
  • created
  • beforeMount

–child beforeCreate

–child created

–child beforeMount

–child mounted

mounted

更新:

  • beforeUpdate

–child beforeUpdate

–child updated

  • updated

销毁:

  • beforeDestroy

– child beforeDestroy

– child destroyed

  • destroyed

带缓存的路由组件生命周期

初始化:

  • mounted
  • –Child activated
  • activated


路由离开

  • –Child deactivated
  • deactivated

路由回来

  • –Child activated
  • activated

捕获子组件错误的勾子

子组件执行抛出错误

  • errorCaptured
阶段 Vue React 小程序应用 小程序页面
创建 beforeCreate constructor() onLaunch onLoad

created
static getDerivedStateFromProps() onShow
beforeMount render() onReady

mounted
componentDidMount()
更新 beforeUpdate static getDerivedStateFromProps() onShow onShow

updated
shouldComponentUpdate() onHide onHide
deactivated render()

activated
getSnapshotBeforeUpdate()
componentDidUpdate()
销毁 beforeDestroy componentWillUnmount() onUnload
destroyed
捕获错误 errorCaptured static getDerivedStateFromError() onError
componentDidCatch()


相关文章
|
3月前
|
Kubernetes API 调度
在K8S中,各个组件及其作用是什么?
在K8S中,各个组件及其作用是什么?
|
3月前
|
存储 Kubernetes API
在K8S中,各个组件及其作用是什么呢?
在K8S中,各个组件及其作用是什么呢?
|
5月前
|
JavaScript 前端开发
Vue组件生命周期深度剖析:从创建到销毁的八大钩子实战指南
Vue组件生命周期深度剖析:从创建到销毁的八大钩子实战指南
|
6月前
|
前端开发 JavaScript 开发者
在React中,如何利用生命周期方法管理组件的状态和行为?
【5月更文挑战第29天】在React中,如何利用生命周期方法管理组件的状态和行为?
53 3
|
6月前
|
存储 监控 安全
JVM工作原理与实战(五):类的生命周期-加载阶段
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了类的生命周期、类的加载阶段等内容。
77 5
|
6月前
|
监控 安全 Java
JVM工作原理与实战(七):类的生命周期-初始化阶段
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了类的生命周期、类的初始化阶段等内容。
52 5
|
前端开发 JavaScript 算法
简述下 React 的生命周期?每个生命周期都做了什么?
react的生命周期,是react组件从挂载到更新再到卸载的这样一个过程,函数组件是没有生命周期这样的一个概念的,它本身就只是一个函数,只有类组件才存在生命周期这样一个概念
416 0
|
6月前
|
设计模式 Java 数据库连接
面试题:一个组件向自己内部注入组件有哪些方法?
面试题:一个组件向自己内部注入组件有哪些方法?
48 0
|
6月前
|
小程序 前端开发 API
小程序的生命周期以及页面生命周期
小程序的生命周期以及页面生命周期
63 0
|
编译器
Stemciljs学习之组件生命周期
Stencil 是一个生成 Web Components(更确切地说,是自定义元素)的编译器。Stencil 将最流行的框架的最佳概念结合到一个简单的构建时工具中。 现在让我们一起学习其中的组件生命周期部分。
71 0