uniapp的生命周期【uniapp 专题 03】

2022-03-29 10:32:00 浏览数 (1)

看过我的安卓,鸿蒙,小程序,或者Flutter的都知道,接下来我要说什么,如果不出意外的话,当然是生命周期了,关于生命周期不外语有两个,一个是应用的生命周期,一个是页面的生命周期。

1.应用生命周期

uni-app 支持 onLaunch、onShow、onHide 等应用生命周期函数,

函数名

说明

onLaunch

当uni-app 初始化完成时触发(全局只触发一次)

onShow

当 uni-app 启动,或从后台进入前台显示

onHide

当 uni-app 从前台进入后台

onError

当 uni-app 报错时触发

onUniNViewMessage

对 nvue 页面发送的数据进行监听,可参考 nvue 向 vue 通讯

onUnhandledRejection

对未处理的 Promise 拒绝事件监听函数(2.8.1 )

onPageNotFound

页面不存在监听函数

onThemeChange

监听系统主题变化

注意

应用生命周期仅可在App.vue中监听,在其它页面监听无效。

  • onlaunch里进行页面跳转,如遇白屏报错, 此时需要延迟做跳转处理。 由于性能优化,HBuilderX 1.9.8和HBuilderX1.9.4的执行时机有所不同。一些在HBuilderX 1.9.4下无需延时的代码,在升级到HBuilderX 1.9.8报错。先请延迟处理。 在HBuilderX 1.9.9 版本,已在底层修复此问题,自动兼容冲突,无需开发者再写延时代码。所以在此之前看一下你的HBuilderX的版本还是很有必有的。
  • onPageNotFound 页面实际上已经打开了(比如通过分享卡片、小程序码)且发现页面不存在,才会触发,api 跳转不存在的页面不会触发(如 uni.navigateTo)

HBuilderX版本查看,在编辑器的关于哪儿

image-20220126010518931

2.页面生命周期

uni-app 支持 onLoad、onShow、onReady 等生命周期函数

函数名

说明

平台差异说明

最低版本

onInit

监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object(用于页面传参),触发时机早于 onLoad

百度小程序

3.1.0

onLoad

监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参),参考示例

onShow

监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面

onReady

监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发

onHide

监听页面隐藏

onUnload

监听页面卸载

onResize

监听窗口尺寸变化

App、微信小程序

onPullDownRefresh

监听用户下拉动作,一般用于下拉刷新,参考示例

onReachBottom

页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据。具体见下方注意事项

onTabItemTap

点击 tab 时触发,参数为Object,具体见下方注意事项

微信小程序、QQ小程序、支付宝小程序、百度小程序、H5、App

onShareAppMessage

用户点击右上角分享

微信小程序、QQ小程序、支付宝小程序、字节小程序、飞书小程序、快手小程序

onPageScroll

监听页面滚动,参数为Object

nvue暂不支持

onNavigationBarButtonTap

监听原生标题栏按钮点击事件,参数为Object

App、H5

onBackPress

监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack ;详细说明及使用:onBackPress 详解。支付宝小程序只有真机能触发,只能监听非navigateBack引起的返回,不可阻止默认行为。

app、H5、支付宝小程序

onNavigationBarSearchInputChanged

监听原生标题栏搜索输入框输入内容变化事件

App、H5

1.6.0

onNavigationBarSearchInputConfirmed

监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。

App、H5

1.6.0

onNavigationBarSearchInputClicked

监听原生标题栏搜索输入框点击事件(pages.json 中的 searchInput 配置 disabled 为 true 时才会触发)

App、H5

1.6.0

onShareTimeline

监听用户点击右上角转发到朋友圈

微信小程序

2.8.1

onAddToFavorites

监听用户点击右上角收藏

微信小程序

2.8.1

其实除了应用生命周期和页面生命周期之外,还有的就是组件生命周期,也是有必要了解的。

3.组件生命周期

uni-app 组件支持的生命周期,与vue标准组件的生命周期相同。这里没有页面级的onLoad等生命周期:

函数名

说明

平台差异说明

最低版本

beforeCreate

在实例初始化之后被调用。详见

created

在实例创建完成后被立即调用。详见

beforeMount

在挂载开始之前被调用。详见

mounted

挂载到实例上去之后调用。详见 注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用$nextTickVue官方文档

beforeUpdate

数据更新时调用,发生在虚拟 DOM 打补丁之前。详见

仅H5平台支持

updated

由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。详见

仅H5平台支持

beforeDestroy

实例销毁之前调用。在这一步,实例仍然完全可用。详见

destroyed

Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。详见

总结

这一节我们了解了应用生命周期和页面生命周期之外,还有的就是组件生命周期,当然,可能官方文档更为齐全,但是我想说的是自己整理过一篇才属于自己,不然只是躺在那儿的冰冷的文字罢了。

参考文档

https://uniapp.dcloud.io/collocation/frame/lifecycle

0 人点赞