UniApp 全生命周期钩子详解

👉 整理不易,如果本文对你有帮助,欢迎点个【赞 👍】+【收藏 ⭐】+【关注 🧡】
后续我们还将继续分享实用的 UniApp 教程,比如:

  • 文件上传
  • 全局请求封装
  • 状态管理
  • 动态路由等…

📮 有任何问题欢迎留言交流哦!


🌟 收藏 + 点赞 + 关注 🌟

学习不迷路,持续更新实用教程,欢迎三连支持,让我们一起进步!👍⭐🧡


📚 UniApp 全生命周期钩子详解

在 UniApp 中,理解生命周期钩子是开发高质量应用的关键。不仅能让我们在正确的时间初始化数据、监听事件、释放资源,还能提升整个应用的稳定性用户体验

UniApp 的生命周期融合了 Vue 的组件生命周期和各平台(如小程序、H5、App)的页面与应用生命周期,下面我们将分部分详解。


🧩 一、应用生命周期(App Lifecycle)

📍应用生命周期指的是整个应用从启动到退出的完整过程,这些钩子定义在 App.vue 中,适用于全局逻辑控制,如初始化、错误处理、全局状态管理等。

生命周期钩子触发时机常见用途
onLaunch应用初始化时,仅触发一次初始化配置、获取系统信息、检查登录状态等
onShow应用进入前台或启动时触发恢复状态、处理跳转参数等
onHide应用进入后台时触发暂停任务、保存数据
onError脚本错误或 API 调用失败时触发全局错误监控与上报
onPageNotFound页面不存在时触发自定义 404 页面跳转
onUnhandledRejectionPromise 被拒绝且未捕获时触发异常统一处理

💡 示例代码

// App.vue
export default {onLaunch(options) {console.log('App Launch', options)// 初始化操作},onShow(options) {console.log('App Show', options)},onHide() {console.log('App Hide')},onError(err) {console.error('App Error', err)},onPageNotFound(res) {console.log('Page Not Found', res)uni.reLaunch({ url: '/pages/404/404' })},onUnhandledRejection(event) {console.error('Unhandled Promise Rejection', event)}
}

📄 二、页面生命周期(Page Lifecycle)

📍页面生命周期发生在用户访问页面的过程中,每个页面(如 pages/index/index.vue)都有自己的一套生命周期钩子。

生命周期钩子触发时机说明
onLoad页面加载时(只触发一次)接收跳转参数,初始化数据
onShow页面每次显示时触发刷新页面数据
onReady页面首次渲染完成可进行 DOM 操作
onHide页面被隐藏(如跳转其他页面)暂停动画、保存状态
onUnload页面卸载(如返回上一页)清除定时器等资源
onPullDownRefresh用户下拉页面时触发实现刷新逻辑(需配置)
onReachBottom页面滚动到底部时触发加载更多数据
onPageScroll页面滚动时触发用于监听滚动高度
onResize窗口大小变化时触发响应式布局
onShareAppMessage用户点击右上角分享时触发(小程序)自定义分享内容
onTabItemTap点击 tab 页面时触发获取点击 tab 信息

💡 示例代码

// pages/index/index.vue
export default {onLoad(options) {console.log('Page Load', options)},onShow() {console.log('Page Show')},onReady() {console.log('Page Ready')},onHide() {console.log('Page Hide')},onUnload() {console.log('Page Unload')},onPullDownRefresh() {console.log('Pull Down Refresh')setTimeout(() => {uni.stopPullDownRefresh()}, 1000)},onReachBottom() {console.log('Reached Bottom')},onShareAppMessage() {return {title: '自定义分享标题',path: '/pages/index/index'}},onPageScroll(e) {console.log('Page Scroll', e.scrollTop)},onResize(e) {console.log('Resize', e.size)},onTabItemTap(item) {console.log('Tab Item Tap', item)}
}

🔄 三、Vue 生命周期与 UniApp 的关系

UniApp 页面组件保留了 Vue 的生命周期钩子(如 createdmounteddestroyed),它们与 UniApp 的生命周期一起工作:

✅ 执行顺序举例:

beforeCreate → created → beforeMount → mounted
↓
onLoad → onShow → onReady(UniApp特有)
↓
onHide / onUnload
→ beforeDestroy → destroyed

💡 注意:Vue 的 created 阶段不能操作 DOM,应在 mountedonReady 中进行。


🔧 四、应用场景总结

钩子场景应用示例
onLaunch初始化全局状态、获取设备信息
onShow页面/应用从后台回到前台时刷新数据
onHide页面/应用切换或关闭时保存数据
onUnload页面销毁时清理定时器
onReachBottom分页加载、数据追加
onPullDownRefresh刷新内容数据
onErroronUnhandledRejection统一错误处理,提升稳定性
onShareAppMessage增强用户分享体验

🧠 五、开发建议

  • 执行顺序要清楚:Vue 与 UniApp 的生命周期有先后,操作 DOM 要放对位置。
  • 多端适配要注意:不同平台生命周期略有差异,建议测试时多平台调试。
  • 资源管理别忽视:如定时器、网络请求要及时清理,避免内存泄漏。
  • 全局错误需监控:用 onErroronUnhandledRejection 报错上报/提醒。
  • 参数接收别遗漏onLoadoptions 是跳转参数关键来源。

✅ 总结

📌 UniApp 的生命周期钩子 = Vue 生命周期 + 小程序生命周期 + 应用生命周期
掌握这些钩子,就像掌握了页面和应用行为的“遥控器”🔧。合理使用生命周期钩子,不仅能让你的页面逻辑更清晰,还能显著提升用户体验和程序性能。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/85891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索NautilusTrader:下一代开源算法交易平台的革命性突破

在金融科技的浪潮中,量化交易领域正经历一场由开源技术驱动的变革。NautilusTrader(https://github.com/nautechsystems/nautilus_trader)作为一款高性能、生产级的算法交易平台,正以其创新的设计理念和强大的技术架构重塑开发者的策略研发流程。 一、核心定位:打破回测与…

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…

[论文阅读] (38)基于大模型的威胁情报分析与知识图谱构建论文总结(读书笔记)

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…

python批量解析提取word内容到excel

# 基于Python实现Word文档内容批量提取与Excel自动化存储 ## 引言 在日常办公场景中,常需要从大量Word文档中提取结构化数据并整理到Excel表格中。传统手动操作效率低下,本文介绍如何通过Python实现自动化批处理,使用python-docx和openpyxl…

win32相关(远程线程和远程线程注入)

远程线程和远程线程注入 CreateRemoteThread函数 作用:创建在另一个进程的虚拟地址空间中运行的线程 HANDLE CreateRemoteThread([in] HANDLE hProcess, // 需要在哪个进程中创建线程[in] LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全…

Flyway

Flyway 是一个强大的数据库版本控制和迁移工具,主要用于管理数据库结构的变更和演进。 核心作用 1. 数据库版本控制 追踪数据库变更:记录每次数据库结构的修改版本管理:为每个变更分配版本号变更历史:完整记录数据库演进过程 …

【深尚想】OPA855QDSGRQ1运算放大器IC德州仪器TI汽车级高速8GHz增益带宽的全面解析

1. 元器件定义与核心特性 OPA855QDSGRQ1 是德州仪器(TI)推出的一款 汽车级高速运算放大器,专为宽带跨阻放大(TIA)和电压放大应用优化。核心特性包括: 超高速性能:增益带宽积(GBWP&a…

机器学习实验八--基于pca的人脸识别

基于pca的人脸识别 引言:pca1.pca是什么2.PCA算法的基本步骤 实例:人脸识别1.实验目的2.实现步骤3.代码实现4.实验结果5.实验总结 引言:pca 1.pca是什么 pca是一种统计方法,它可以通过正交变换将一组可能相关的变量转换成一组线…

【LLIE专题】NTIRE 2025 低照度图像增强第二名方案

Towards Scale-Aware Low-Light Enhancement via Structure-Guided Transformer Design(2025,NTIRE) 专题介绍一、研究背景二、SG-LLIE方法1.和Retinexformer方案对比2.总体方案及创新点3.详细方案3.1 结构先验提取3.2 网络结构3.3 损失函数 …

泊松融合的介绍和OpenCV教程

泊松融合 Poisson Blending 简介 核心思想 泊松融合的目标是在保留剪切图像的梯度(纹理)信息的同时,使融合结果在边界区域平滑过渡到目标图像中。换句话说,它在融合区域中重建一个图像,使其梯度尽可能接近源图像的梯度,并且边界贴合目标图像。 数学描述 泊松融合将问题…

Unity协程Coroutine与UniTask对比

原理对比 CoroutineUniTask本质IEnumerator 的协作调度器async/await 状态机(IAsyncStateMachine)调度方式Unity 内部调用 MoveNext()自建 PlayerLoopRunner 控制状态推进内存管理引用类型,频繁分配 GC结构体 UniTask,低 GC 压力…

MAC软件打开提示已损坏:“已损坏,打不开。您应将它移到废纸篓“

打开「终端.app」,输入以下命令并回车,输入开机密码回车 sudo spctl --master-disable 按照上述步骤操作完成后,打开「系统偏好设置」-「安全与隐私」-「通用」,确保已经修改为「任何来源」。 打开「终端.app」,输入…

JAVA之 Lambda

Java Lambda Lambda 表达式是 Java 8 的核心特性,通过 函数式编程 大幅简化代码。其核心思想是将行为作为参数传递,替代匿名内部类,提升代码的简洁性和可读性。以下是系统解析和完整代码示例: 一、Lambda 表达式基础 语法结构 (…

Starrocks中RoaringBitmap杂谈

背景 最近在阅读Starrocks源码的时候&#xff0c;遇到ColumnRefSet的RoaringBitmap使用&#xff0c;所以借此来讨论一下RoaringBitmap这个数据结构,这种思想是很值得借鉴的。 对于的实现可以参考一下 <dependency><groupId>org.roaringbitmap</groupId><…

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…

从Java的Jvm的角度解释一下为什么String不可变?

从Java的Jvm的角度解释一下为什么String不可变&#xff1f; 从 JVM 的角度看&#xff0c;Java 中 String 的不可变性是由多层次的机制共同保障的&#xff0c;这些设计涉及内存管理、性能优化和安全保障&#xff1a; 1. JVM 内存模型与字符串常量池 字符串常量池&#xff08;St…

初识硬编码(x86指令描述)

硬编码 任何一个程序其实都可以看做两部分组成的&#xff0c;指令和数据 cpu并没有明确的规定哪些要当做数据&#xff0c;哪些要当做指令来执行&#xff0c;把数据给EIP只要是遵循了指定的格式&#xff08;x86 x64 ARM&#xff09;&#xff0c;cpu都会当做指令来执行 x86/x64…

3.RV1126-OPENCV 图像叠加

一.功能介绍 图像叠加&#xff1a;就是在一张图片上放上自己想要的图片&#xff0c;如LOGO&#xff0c;时间等。有点像之前提到的OSD原理一样。例如&#xff1a;下图一张图片&#xff0c;在左上角增加其他图片。 二.OPENCV中图像叠加常用的API 1. copyTo方法进行图像叠加 原理…

MySQL垂直分库(基于MyCat)

参考资料&#xff1a; 参考视频 参考博客 Mycat基本部署 视频参考资料&#xff1a;链接: https://pan.baidu.com/s/1xT_WokN_xlRv0h06b6F3yg 提取码: aag3 概要&#xff1a; 本文的垂直分库&#xff0c;全部是基于前文部署的基本架构进行的 垂直分库&#xff1a; 垂直分库…

Spitfire:Codigger 生态中的高性能、安全、分布式浏览器

Spitfire 是 Codigger 生态系统中的一款现代化浏览器&#xff0c;专为追求高效、隐私和分布式技术的用户设计。它结合了 Codigger 的分布式架构优势&#xff0c;在速度、安全性和开发者支持方面提供了独特的解决方案&#xff0c;同时确保用户对数据的完全控制。 1. 高性能浏览…