uni-app 生命周期

微信小程序生命周期

uni-app的生命周期主要包括

  • 应用生命周期(整个App的生命周期)

    在app.vue里面调用的,通过App(Object)函数用来注册一个小程序,指定其小程序的生命周期回调

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

  • 页面生命周期(单个页面(page)的生命周期)

    指的是当你每进入/切换到一个新的页面的时候,就会调用的生命周期函数,同样通过App(Object)函数用来注册一个页面

  • 组件生命周期(组件(component)的生命周期)

    指的是组件自身的一些函数,这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发

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


应用生命周期

所有页面都是在App.vue下进行切换的,是应用入口文件。但App.vue本身不是页面,这里不能编写视图元素,也就是没有。

这个文件的作用包括:监听应用生命周期、配置全局样式、配置全局的存储globalData

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

函数名说明
onLaunch当uni-app 初始化完成时触发(全局只触发一次)。这个生命周期函数通常用于执行一些全局的初始化操作,如登录判断等。
onShow当 uni-app 启动,或从后台进入前台显示
onHide当 uni-app 从前台进入后台
<script>
	// 只能在App.vue里监听应用的生命周期
	export default {
		onLaunch: function(options) {
			console.log('App Launch')
			console.log('应用启动路径:', options.path)
		},
		onShow: function(options) {
			console.log('App Show')
			console.log('应用启动路径:', options.path)
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>
  • 应用生命周期仅可在App.vue中监听,在其它页面监听无效。

  • 应用启动参数,可以在API uni.getLaunchOptionsSync获取,详见

  • onlaunch里进行页面跳转,如遇白屏报错,请参考https://ask.dcloud.net.cn/article/35942

  • App.vue 不能写模板

  • onPageNotFound 页面实际上已经打开了(比如通过分享卡片、小程序码)且发现页面不存在,才会触发,api 跳转不存在的页面不会触发(如 uni.navigateTo)


页面生命周期

uni-app 页面除支持 Vue 组件生命周期外还支持下方页面生命周期函数,当以组合式 API 使用时,在 Vue2 和 Vue3 中存在一定区别

函数名描述平台差异
onInit监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据。百度小程序
onLoad监听页面加载,在页面开始加载时触发,此时页面的DOM结构尚未渲染完成。这个生命周期函数通常用于获取页面所需的数据。
onShow监听页面显示,每次页面显示时都会触发这个钩子。
onReady监听页面渲染完成,如果页面渲染速度快(元素较少),则可能在页面翻页动画完成前就已经触发。这个生命周期函数通常用于执行一些需要依赖DOM结构的操作。
onHide监听页面隐藏,每次页面隐藏时都会触发这个钩子。
onUnload监听页面卸载,当页面不再显示且将被卸载时触发。
onResize监听窗口尺寸变化。App、微信小程序、快手小程序
onPullDownRefresh监听用户下拉动作,一般用于下拉刷新。
onReachBottom页面上拉触底事件的处理函数。
onTabItemTap点击tab时触发。微信小程序、QQ小程序、支付宝小程序、百度小程序、H5、App、快手小程序、京东小程序
onShareAppMessage用户点击右上角分享时触发。微信小程序、QQ小程序、支付宝小程序、抖音小程序、飞书小程序、快手小程序、京东小程序
onPageScroll监听页面滚动。nvue不支持
onNavigationBarButtonTap监听原生标题栏按钮点击事件。App、H5
onBackPress监听用户点击返回按钮事件,返回事件不阻止则页面回退。app、H5、支付宝小程序
onNavigationBarSearchInputChanged监听原生标题栏搜索输入框内容变化事件。App、H5
onNavigationBarSearchInputConfirmed监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。App、H5
onNavigationBarSearchInputClicked监听原生标题栏搜索输入框点击事件。App、H5
onShareTimeline监听用户点击右上角转发到朋友圈。微信小程序
onAddToFavorites监听用户点击右上角收藏。微信小程序、QQ小程序

Vue2 页面及组件生命周期流程图
在这里插入图片描述

Vue3 页面及组件生命周期流程图
在这里插入图片描述


组件生命周期

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

函数名说明平台差异
beforeCreate在实例初始化之前被调用
created在实例创建完成后被立即调用
beforeMount在挂载开始之前被调用
mounted挂载到实例上去之后调用。详见 注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用$nextTick
beforeUpdate数据更新时调用,发生在虚拟 DOM 打补丁之前仅H5平台支持
updated由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子仅H5平台支持
beforeDestroy实例销毁之前调用。在这一步,实例仍然完全可用
destroyedVue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁

页面加载顺序

首次加载渲染过程

  1. 应用级 onLaunch
  2. 应用级 onShow
    .
  3. 页面级 onLoad
  4. 页面级 onShow
    .
  5. 组件级 beforeCreate
  6. 组件级 created
  7. 组件级 beforeMount
  8. 组件级 mounted
    .
  9. 页面级 onReady

跳转到其他页面

由 页面1 跳转到 页面2

  1. 页面1 onHide
    .
  2. 页面2 onLoad
  3. 页面2 onShow
  4. 页面2 onReady

返回页面

由 页面2 返回 页面1

  1. 页面2 onUnload
    .
  2. 页面1 onShow

应用进入后台

  1. 应用级 onHide
    .
  2. 页面级 onHide

应用进入前台

  1. 应用级 onShow
    .
  2. 页面级 onShow
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫老板的豆

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值