当前位置: 首页 > news >正文

UniApp 生命周期详解:从启动到销毁的完整指南

目录

一、UniApp 生命周期体系概览

二、应用生命周期(App.vue)

三、页面生命周期(Page)

四、组件生命周期(Vue 标准)

五、三者的执行顺序(场景示例)

六、最佳实践与避坑指南


一、UniApp 生命周期体系概览

UniApp 的生命周期分为三类:

  1. 应用生命周期 - 管理整个 App 的启动、切换

  2. 页面生命周期 - 控制单个页面的加载、渲染、隐藏

  3. 组件生命周期 - Vue 组件的创建、更新、销毁


二、应用生命周期(App.vue)

在 App.vue 中定义,监听整个应用的全局事件:

export default {onLaunch(options) {// 初始化完成时触发(全局只触发一次)console.log('App 启动', options)},onShow(options) {// 从后台切换到前台时触发console.log('App 进入前台', options)},onHide() {// 从前台切换到后台时触发console.log('App 进入后台')},onError(err) {// 脚本错误监听console.error('全局错误', err)}
}

适用场景

  • onLaunch:初始化全局数据(如用户登录状态)

  • onShow:恢复应用时刷新数据

  • onError:捕获全局异常

 

三、页面生命周期(Page)

在页面 .vue 文件中定义,控制页面级行为:

export default {onLoad(options) {// 页面加载时触发,接收路由参数console.log('页面加载', options.id)},onShow() {// 页面显示/切入前台时触发console.log('页面显示')},onReady() {// 页面初次渲染完成(DOM 就绪)console.log('页面就绪')},onHide() {// 页面隐藏/切入后台console.log('页面隐藏')},onUnload() {// 页面卸载(关闭或路由跳离)console.log('页面销毁')},onPullDownRefresh() {// 监听用户下拉刷新console.log('下拉刷新')}
}

 关键执行顺序
onLoad → onShow → onReady →(用户操作)→ onHide → onUnload

 

四、组件生命周期(Vue 标准)

组件遵循 Vue 的生命周期,常用钩子:

export default {created() {// 组件实例创建完成(未挂载 DOM)},mounted() {// DOM 挂载完成(可操作 DOM)},updated() {// 数据更新导致 DOM 重新渲染},beforeDestroy() {// 组件销毁前(清理定时器/解绑事件)}
}

 

 

五、三者的执行顺序(场景示例)

当首次启动应用并打开页面时:

  1. App.onLaunch → 应用初始化

  2. App.onShow → 应用进入前台

  3. Page.onLoad → 页面加载参数

  4. Page.onShow → 页面显示

  5. Component.created → 子组件创建

  6. Page.onReady → 页面渲染完成

  7. Component.mounted → 子组件挂载

 

 

六、最佳实践与避坑指南
  1. 数据请求放在哪里?

  • 初始数据:onLoad(可获取路由参数)

  • 实时刷新:onShow(如返回页面时更新)

     2. 避免内存泄漏

  • 在 onUnload 或 beforeDestroy 中销毁定时器、全局事件

    3. 页面跳转传参

  • 使用 onLoad(options) 接收参数,而非 created

    onLoad(options) {this.id = options.id // 接收 url 参数 ?id=123
    }

 七、完整流程图(简化版)

启动应用 → App.onLaunch → App.onShow  ↓  
打开页面 → Page.onLoad → Page.onShow → Page.onReady  ↓  
切换后台 → Page.onHide → App.onHide  ↓  
返回前台 → App.onShow → Page.onShow  ↓  
关闭页面 → Page.onUnload → Component.beforeDestroy  

 

结语
深入理解 UniApp 生命周期,能有效解决页面刷新、数据同步、资源管理等核心问题。建议在开发中结合具体场景选择钩子函数,并善用官方文档(UniApp 生命周期)进行调试。 

http://www.dtcms.com/a/274380.html

相关文章:

  • 如何快速掌握WeNet:从零到一的端到端语音识别学习指南
  • SSRF11 各种限制绕过之DNS rebinding 绕过内网 ip 限制
  • FREERTOS根本不能使用连续接收串口思想
  • C语言的程序控制语句
  • 多态 使用场景
  • 【构建Tomcat版本检查工具:自动检测并提醒版本更新】
  • 云、实时、时序数据库混合应用:医疗数据管理的革新与展望(中)
  • 解决Linux绑定失败地址已使用(端口被占用)的问题
  • day050-ansible剧本与变量
  • 云暴露面分析完整指南
  • 2025年7月11日—基础算法—高精度
  • 删除mysql文件夹时显示在另一程序中打开
  • 期权交易完整版教程简介
  • 工具分享--IP与域名提取工具
  • YOLOv13来了!基于超图增强的自适应视觉感知实时目标检测
  • 数据结构第一章复杂度的认识
  • WebSocket 重连与心跳机制:打造坚如磐石的实时连接
  • 005---Xilinx Viivado FIFO (二)---fifo IP核使用总结
  • python之set详谈
  • 大数据驱动的酒店用品需求预测模型研究 开发——毕业论文,毕业设计——仙盟创梦IDE
  • Linux驱动基本概念(内核态、用户态、模块、加载、卸载、设备注册、字符设备)
  • linux文件系统目录结构以及交互界面
  • 稳定币将成为新时代的重要金融工具
  • Pandas:数据类型转换
  • c99-柔性数组
  • NVME在ubuntu上总是导致死机
  • Android simpleperf生成火焰图
  • 深度解析 DApp 开发:从技术架构到商业落地的全链路解决
  • Linux 进程管理核心机制
  • 掌握Spring声明式事务传播机制:AOP与ThreadLocal的协同工作