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

Uni-app 生命周期全解析

目录

一、应用生命周期

二、页面生命周期

三、组件生命周期

四、应用场景总结

五、面试回答示例


在使用 uni-app 进行开发时,生命周期是面试和实际开发中经常遇到的问题。理解生命周期有助于我们更好地掌控应用运行的流程,从而实现更优雅的代码设计。本文将从 应用生命周期、页面生命周期、组件生命周期 三个方面来详细讲解。


一、应用生命周期

应用生命周期是指整个 App 级别的生命周期钩子,主要在 App.vue 中使用。

生命周期函数触发时机常见用途
onLaunch应用初始化时触发(只会触发一次)初始化数据、登录态校验、获取设备信息
onShow应用启动或从后台进入前台时触发场景还原、统计上报、刷新数据
onHide应用从前台进入后台时触发数据持久化、本地存储
onError应用报错时触发错误日志收集、上报监控平台

示例代码:

// App.vue
export default {onLaunch() {console.log('App 启动了');},onShow() {console.log('App 显示了');},onHide() {console.log('App 隐藏了');},onError(err) {console.error('程序出错:', err);}
}

二、页面生命周期

页面生命周期是指某一个页面的运行过程中的钩子函数,主要在 pages 下的 .vue 文件中使用。

生命周期函数触发时机常见用途
onLoad页面加载时触发,参数为上个页面传递的数据接收参数、初始化数据请求
onShow页面显示时触发刷新页面数据、更新 UI
onReady页面初次渲染完成时触发(只触发一次)操作 DOM、初始化第三方库
onHide页面隐藏时触发暂停动画、停止视频播放
onUnload页面卸载时触发清理定时器、释放资源
onPullDownRefresh用户下拉动作时触发刷新页面数据
onReachBottom页面滚动到底部时触发上拉加载更多数据
onResize屏幕旋转或窗口大小变化时触发适配不同屏幕布局
onTabItemTap点击 Tab 栏时触发(仅 Tab 页有效)切换 Tab 逻辑

示例代码:

// pages/index/index.vue
export default {onLoad(options) {console.log('页面加载', options);},onShow() {console.log('页面显示');},onReady() {console.log('页面初次渲染完成');},onHide() {console.log('页面隐藏');},onUnload() {console.log('页面卸载');},onPullDownRefresh() {console.log('用户下拉刷新');// 停止刷新uni.stopPullDownRefresh();},onReachBottom() {console.log('触底加载更多');}
}

三、组件生命周期

在 uni-app 中,组件的生命周期与 Vue 基本一致。常见的有:

生命周期函数触发时机
beforeCreate组件实例刚创建,还未初始化 data
created组件实例创建完成,可访问 data 和 methods
beforeMount组件挂载前
mounted组件挂载完成,DOM 已可操作
beforeUpdate数据更新前
updated数据更新后
beforeDestroy组件销毁前
destroyed组件销毁完成

示例代码:

export default {data() {return {msg: 'Hello Uni-app'}},created() {console.log('组件已创建');},mounted() {console.log('组件挂载完成');},beforeDestroy() {console.log('组件销毁前');},destroyed() {console.log('组件已销毁');}
}

四、应用场景总结

  • onLaunch:做登录、全局配置初始化

  • onShow / onHide:常用于埋点统计、应用前后台切换逻辑

  • onLoad:页面参数接收、数据请求

  • onPullDownRefresh / onReachBottom:常用于分页加载、数据刷新

  • 组件生命周期:常用于 DOM 操作、第三方插件初始化、清理资源


五、面试回答示例

如果面试官问到 uni-app 生命周期,可以这样回答:

 应用生命周期:onLaunch(初始化)、onShow(前台显示)、onHide(后台)、onError(错误处理)。
 页面生命周期:onLoad(参数获取)、onShow(页面展示)、onReady(首次渲染)、onHide、onUnload,还有下拉刷新、上拉加载、屏幕旋转等。
 组件生命周期:基本与 Vue 保持一致,如 created、mounted、updated、destroyed。


文章转载自:

http://XLkQUoAB.tmpLs.cn
http://LFeLmBKj.tmpLs.cn
http://jQyZjaNU.tmpLs.cn
http://Mlh6mdfW.tmpLs.cn
http://1Nb2GQhv.tmpLs.cn
http://niUhpsGG.tmpLs.cn
http://BMjOQk95.tmpLs.cn
http://2EkaJUBJ.tmpLs.cn
http://ysq5K4cC.tmpLs.cn
http://OEphZ4Vq.tmpLs.cn
http://mLohGTI8.tmpLs.cn
http://fJayTmd4.tmpLs.cn
http://WZQc9S14.tmpLs.cn
http://4nZU4NuA.tmpLs.cn
http://8mXb2CeN.tmpLs.cn
http://KqzJIOTJ.tmpLs.cn
http://f13bNYK2.tmpLs.cn
http://3X62iB5t.tmpLs.cn
http://KTHzsZjv.tmpLs.cn
http://5pWvxc9e.tmpLs.cn
http://HePB9eXd.tmpLs.cn
http://aNrl3Tur.tmpLs.cn
http://WHyrpwia.tmpLs.cn
http://mujZ09Ay.tmpLs.cn
http://CYO3Jzsn.tmpLs.cn
http://J55gBtHW.tmpLs.cn
http://psirLkxx.tmpLs.cn
http://6wMq3pNT.tmpLs.cn
http://bzUnk3tj.tmpLs.cn
http://iXLS9IkA.tmpLs.cn
http://www.dtcms.com/a/385928.html

相关文章:

  • JavaEE开发技术(第一章:Servlet基础)
  • 【数据结构】跳表
  • 设计模式-桥接模式02
  • Linux 基础命令详解与学习笔记
  • 设计模式(C++)详解——桥接模式(2)
  • 鹧鸪云光储流程系统:以智能仓储管理,驱动项目高效协同
  • DIY Linux 桌面:WiFi 管理器
  • 从 Pump.fun「直播」看热点币的生与死
  • 《算法闯关指南:优选算法-双指针》--05有效三角形的个数,06查找总价值为目标值的两个商品
  • Java List 详解:从基础到进阶的全面指南
  • 【问题】自启动的容器在开机重启后 都退出了,未能正常启动
  • 苹果手机上有没有可以定时提醒做事的工具
  • blender多个动作导入到unity
  • 通过adb dump activity的configChanges配置
  • 智能语音机器人如何提升语音交互机器人的交互能力?
  • 一文读懂Docker:从入门到实践
  • 控制IP端口访问的方法
  • VS2017 下openssl-1.1.1+ libwebsockets-4.0.0 编译
  • 从 “无感服务” 到 “情感连接”:智慧园区如何用科技重构企业归属感
  • 封装形成用助焊剂:电子制造“隐形桥梁”的技术突围与全球产业重构
  • 3dsMax 2026 .NET Core 8 转型下的Maxscript脚本开发:动态编译模块的重构策略与兼容性升级路径
  • 高并发异步处理实战指南与性能优化策略
  • React18学习笔记(二) React的状态管理工具--Redux,案例--移动端外卖平台
  • ReactJS + DynamoDB 性能优化方案
  • Next.js与React服务端渲染演进全解析
  • C++ `std::future` 与 `std::promise` 超全解析笔记
  • VScode插件Remote-SSH
  • 挣脱网络桎梏:CapsWriter-Offline+cpolar,让高效输入不受网络牵绊
  • Qt地图软件开发/GIS软件开发组件/修改天地图支持21级别/离线瓦片地图
  • Kafka 跨集群地理复制(Geo-Replication)