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

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


相关文章:

  • docker镜像下载到本地,并导入服务器
  • 豆瓣图书评论数据分析与可视化
  • sylar--线程模块
  • 如何有效删除 iPhone 上的所有内容?
  • 零基础玩转Python生物信息学:数据分析与算法实现
  • SpringBoot(七) --- Redis基础
  • Windows 12确认没了,Win11 重心偏移修Bug
  • Asp.Net Core基于StackExchange Redis 缓存
  • 让视觉基础模型(VFMs)像大语言模型(LLMs)一样“会思考”​
  • Vue2 和 Vue3 常见 CSS 样式归纳总结
  • 09.MySQL内外连接
  • 基于对比学习的带钢表面缺陷分类研究,整合SimCLR自监督预训练与YOLOv8目标检测框架的技术解析及Python实现方案
  • ASP.NET Core 中间件深度解析:构建灵活高效的请求处理管道
  • 【学习笔记】Circuit Tracing: Revealing Computational Graphs in Language Models
  • 电脑网络重置,找不到原先自家的WIFI,手机还能正常连接并上网
  • 【C++】AVL树的概念及实现(万字图文超详解)
  • C++11 中 auto 和 decltype 的深入解析
  • 【Python零基础入门系列】第7篇:Python中的错误与异常处理
  • SPI通信协议(软件SPI读取W25Q64)
  • 计算机视觉处理----OpenCV(从摄像头采集视频、视频处理与视频录制)
  • win2008系统做网站/seo点石论坛
  • 免费制作开业宣传视频/百度广告优化师
  • zblog做企业网站/上海搜索引擎推广公司
  • 做门户网站找哪家公司/在线生成个人网站app
  • 网站美工设计收费/正规的培训机构有哪些
  • 网站吸流量/产品推广的渠道有哪些