若依App版是基于uniapp的,在 UniApp 中,生命周期分为 应用生命周期、页面生命周期 和 组件生命周期。
1.应用生命周期
函数名 | 说明 |
---|---|
onLaunch | 当uni-app初始化完成时触发(全局只触发一次) |
onShow | 当uni-app启动,或从后台进入前台显示 |
onHide | 当uni-app从前台进入后台 |
onError | 当uni-app报错时触发 |
onUniNViewMessage | 对nvue页面发送的数据进行监听 |
onUnhandledRejection | 对未处理的 Promise 拒绝事件监听函数 |
onPageNotFound | 页面不存在监听函数 |
onThemeChange | 监听系统主题变化 |
注意:应用生命周期仅可在App.vue
中监听,在其它页面监听无效。
我们修改一下app.vue中的代码,加入下面的代码后

点击“运行”中的“运行到浏览器”,等待一会,可以看到浏览器自动打开。
浏览器打开后,按一下F12,可以看到生命周期函数的内容被正常执行了。

2.页面生命周期
uni-app支持如下声明周期
函数名 | 说明 |
---|---|
onInit | 监听页面初始化 |
onLoad | 监听页面加载 |
onShow | 监听页面显示 |
onReady | 监听页面初次渲染完成 |
onHide | 监听页面隐藏 |
onUnload | 监听页面卸载 |
onResize | 监听窗口尺寸变化 |
onPullDownRefresh | 监听用户下拉动作,一般用于下拉刷新 |
onReachBottom | 页面上拉触底事件的处理函数 |
onTabItemTap | 点击 tab 时触发 |
onShareAppMessage | 用户点击右上角分享 |
onPageScroll | 监听页面滚动 |
onNavigationBarButtonTap | 监听原生标题栏按钮点击事件 |
onBackPress | 监听页面返回 |
onNavigationBarSearchInputChanged | 监听原生标题栏搜索输入框输入内容变化事件 |
onNavigationBarSearchInputConfirmed | 监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发 |
onNavigationBarSearchInputClicked | 监听原生标题栏搜索输入框点击事件 |
onShareTimeline | 监听用户点击右上角转发到朋友圈 |
onAddToFavorites | 监听用户点击右上角收藏 |
我们在index.vue中新增代码,测试一下页面的生命周期。

代码如下:
<template>
<view class="content">
<image class="logo" src="@/static/logo.png"></image>
<view class="text-area">
<text class="title">Hello RuoYi</text>
</view>
</view>
</template>
<!-- 新增 -->
<script>
export default {
onInit(){
console.log("index页面"+"onInit")
},
onLoad(){
console.log("index页面"+"onLoad")
},
onShow(){
console.log("index页面"+"onShow")
},
onReady(){
console.log("index页面"+"onReady")
},
onHide(){
console.log("index页面"+"onHide")
},
onUnload(){
console.log("index页面"+"onUnload")
},
}
</script>
<style scoped>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>
运行效果如下:

3.组件生命周期
uni-app
组件支持的生命周期,与vue标准组件的生命周期相同。这里没有页面级的onLoad等生命周期:
函数名 | 说明 |
---|---|
beforeCreate | 在实例初始化之前被调用 |
created | 在实例创建完成后被立即调用 |
beforeMount | 在挂载开始之前被调用 |
mounted | 挂载到实例上去之后调用 |
beforeUpdate | 数据更新时调用 |
updated | 由于数据更改时调用 |
beforeDestroy | 实例销毁之前调用 |
destroyed | 实例销毁后调用 |
我们继续修改index.vue代码,加入组件生命周期,
修改index.vue中的代码如下:
<template>
<view class="content">
<image class="logo" src="@/static/logo.png"></image>
<view class="text-area">
<text class="title">Hello RuoYi</text>
</view>
</view>
</template>
<!-- 新增 -->
<script>
export default {
onInit(){
console.log("index页面"+"onInit")
},
onLoad(){
console.log("index页面"+"onLoad")
},
onShow(){
console.log("index页面"+"onShow")
},
onReady(){
console.log("index页面"+"onReady")
},
onHide(){
console.log("index页面"+"onHide")
},
onUnload(){
console.log("index页面"+"onUnload")
},
//组件生命周期
beforeCreate(){
console.log("组件"+"beforeCreate")
},
created(){
console.log("组件"+"created")
},
beforeMount(){
console.log("组件"+"beforeMount")
},
mounted(){
console.log("组件"+"mounted")
},
beforeUpdate(){
console.log("组件"+"beforeUpdate")
},
updated(){
console.log("组件"+"updated")
},
beforeDestroy(){
console.log("组件"+"beforeDestroy")
},
destroyed(){
console.log("组件"+"destroyed")
}
}
</script>
<style scoped>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.logo {
height: 200rpx;
width: 200rpx;
margin-top: 200rpx;
margin-left: auto;
margin-right: auto;
margin-bottom: 50rpx;
}
.text-area {
display: flex;
justify-content: center;
}
.title {
font-size: 36rpx;
color: #8f8f94;
}
</style>
重新保存后,运行结果如下:
