简述一下组件的生命周期

简介: 在进行组件化项目开发的时候都会存在一个组件的生命周期概念,像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()


相关文章
|
JavaScript 数据处理
JS 取整,取余操作
JS 取整,取余操作
519 0
|
4月前
|
边缘计算 关系型数据库 分布式数据库
PolarDB Supabase Edge Functions - 让函数,随时可用
PolarDB Supabase Edge Functions 是现代全栈开发的无服务器引擎,基于 Deno 运行时构建,支持在全球边缘节点部署自定义代码,实现低延迟、高可用的 API 与事件处理。它提供 CLI 和可视化 Studio 两种开发方式,打造高效开发闭环。相比开源版 Supabase,PolarDB Supabase 在公有云环境中实现了完整功能闭环,兼顾企业级控制力与便捷开发体验。
PolarDB Supabase Edge Functions - 让函数,随时可用
|
11月前
|
数据采集 机器学习/深度学习 人工智能
《探秘:人工智能如何为鸿蒙Next元宇宙网络传输与延迟问题破局》
鸿蒙Next结合人工智能,为元宇宙的网络传输和低延迟问题提供创新解决方案。通过智能网络监测与预测、自适应传输策略调整、智能路由与负载均衡、数据预处理与缓存优化及错误检测与恢复等技术,确保用户在元宇宙中享受流畅、沉浸式的体验。这些方法不仅提升了数据传输效率,还增强了系统的稳定性和响应速度,推动元宇宙产业快速发展。
312 12
|
4月前
|
安全 数据安全/隐私保护
屏幕自动点击器, 手机自动点击器, 自动连点器屏幕【autojs】
完整UI界面:包含悬浮窗控制面板,支持拖动位置调整 核心功能:单点/连续点击、位置记录、任务执行与停止
|
存储 运维 Cloud Native
数据仓库革新:Snowflake在云数据平台中的创新实践
【10月更文挑战第26天】随着大数据时代的到来,数据仓库正经历重大变革。本文探讨了Snowflake在云数据平台中的创新应用,通过弹性扩展、高性能查询、数据安全、多数据源接入和云原生架构等最佳实践,展示了其独特优势,帮助企业提升数据处理和分析效率,保障数据安全,降低运维成本,推动业务快速发展。
605 2
|
SQL 存储 安全
SQL安全深度剖析:守护数据安全的坚固防线
展望未来,随着技术的不断进步和攻击手段的不断翻新,SQL安全将面临更多的挑战。因此,我们需要持续关注SQL安全领域的最新动态和技术发展,并不断更新和完善我们的防护措施。同时,加强国际合作与信息共享也是提升全球SQL安全性的重要途径。让我们共同努力,为构建一个更加安全、可靠的数字化环境而奋斗。
|
移动开发 JavaScript HTML5
el-input限制输入整数等分析
本文介绍了在Vue中限制el-input只能输入整数的几种方式,包括设置type为number,使用inputmode属性,自定义指令,计算属性,使用onafterpaste和onkeyup事件以及使用el-input-number的precision属性。每种方式都有其优缺点,可以根据实际需求选择合适的方式。比较建议用自定义指令的方式来实现。
2844 0
el-input限制输入整数等分析
|
JavaScript 索引
js数组的增删改查,十二种方法(含代码)
js数组的增删改查,十二种方法(含代码)
matlab使用移动平均滤波器、重采样和Hampel过滤器进行信号平滑处理
matlab使用移动平均滤波器、重采样和Hampel过滤器进行信号平滑处理
|
网络协议 程序员 网络安全
掌握 SOME/IP :事件通知 构建高效通信系统的关键技术
掌握 SOME/IP :事件通知 构建高效通信系统的关键技术
834 0

热门文章

最新文章