当前位置: 首页 > 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.xdnf.cn/news/1100467.html

相关文章:

  • WHQL认证失败怎么办?企业如何高效申请
  • 前端开发—全栈开发
  • Python中类静态方法:@classmethod/@staticmethod详解和实战示例
  • Linux:多线程---同步生产者消费者模型
  • 人事系统选型与应用全攻略:从痛点解决到效率跃升的实战指南
  • 区块链应用场景深度解读:金融领域的革新与突破
  • 资源分享-FPS, 矩阵, 骨骼, 绘制, 自瞄, U3D, UE4逆向辅助实战视频教程
  • 将Blender、Three.js与Cesium集成构建物联网3D可视化系统
  • 【SpringAI】6.向量检索(redis)
  • javaweb之相关jar包和前端包下载。
  • PHY模式,slave master怎么区分
  • 7.11文件和异常
  • 什么是进程、什么是线程(进程、线程的全方面解析)
  • 界面组件DevExpress WPF中文教程:Grid - 如何检查节点?
  • 在 React Three Fiber 中实现 3D 模型点击扩散波效果
  • JavaWeb笔记二
  • 企业级配置:Azure 邮件与 Cloudflare 域名解析的安全验证落地详解
  • CReFT-CAD 笔记 带标注工程图dxf,png数据集
  • JVM 内存结构
  • 每天一个前端小知识 Day 29 - WebGL / WebGPU 数据可视化引擎设计与实践
  • 人工智能-基础篇-29-什么是低代码平台?
  • AI问答之手机相机专业拍照模式的主要几个参数解释
  • 人工智能-基础篇-28-模型上下文协议--MCP请求示例(JSON格式,客户端代码,服务端代码等示例)
  • 大数据学习7:Azkaban调度器
  • 《Effective Python》第十三章 测试与调试——使用 Mock 测试具有复杂依赖的代码
  • Three.js+Shader实现三维波动粒子幕特效
  • 量子计算系统软件:让“脆弱”的量子计算机真正可用
  • DDL期间TDSQL异常会话查询造成数据库主备切换
  • 【NLP入门系列六】Word2Vec模型简介,与以《人民的名义》小说原文实践
  • 如何利用个人电脑搭建数据库服务器实现远程协作