vue生命周期和uniapp生命周期中的onshow对应的是哪个生命周期
Vue 生命周期分为八个阶段,分别是:创建前、创建中、创建后、挂载前、挂载后、更新前、更新后和销毁前。其中,mounted
钩子函数表示 vue 实例已经被挂载到 DOM 上时触发。而 created
钩子函数表示 vue 实例被创建时触发,可以在该钩子函数中进行数据初始化等操作。
uni-app 生命周期中的 onShow
对应的是 mounted
钩子函数,在小程序中对应的是 onShow
生命周期函数。在 uni-app 中,当页面显示时,会触发 mounted
钩子函数。这意味着,当用户打开或从其他页面返回当前页面时,都会触发 mounted
钩子函数。
vue2生命周期和uniapp生命周期对比
Vue2的生命周期和Uniapp的生命周期有一些相似之处,但也存在一些差异。下面是它们的对比:
Vue2的生命周期包括以下阶段:
- beforeCreate:实例刚在内存中创建,数据观测和事件配置之前。
- created:实例已经创建完成,数据观测和事件配置完成。
- beforeMount:模板编译/挂载之前。
- mounted:模板编译/挂载完成,实例已经挂载到DOM上。
- beforeUpdate:数据更新之前,虚拟DOM重新渲染之前。
- updated:数据更新完成,虚拟DOM重新渲染完成。
- beforeDestroy:实例销毁之前,清除定时器、解绑事件等操作。
- destroyed:实例销毁完成。
Uniapp的生命周期与Vue2的生命周期类似,但有一些额外的生命周期钩子函数:
- onLaunch:小程序初始化时触发,全局只触发一次。
- onShow:小程序启动或从后台进入前台显示时触发。
- onHide:小程序从前台进入后台时触发。
- onError:小程序发生脚本错误或API调用失败时触发。
- onPageNotFound:小程序找不到页面时触发。
Uniapp还支持页面级别的生命周期钩子函数,包括:
- onLoad:页面加载时触发。
- onReady:页面初次渲染完成时触发。
- onUnload:页面卸载时触发。
- onPullDownRefresh:用户下拉刷新时触发。
- onReachBottom:页面上拉触底时触发。
- onShareAppMessage:用户点击右上角分享时触发。
uniapp和原生vue的生命周期对比
UniApp 生命周期与原生 Vue 生命周期的对比分析
1. 全局生命周期
UniApp 提供了一些特定于整个应用程序的生命周期方法,这些方法只能在 App.vue
中定义并监听[^3]。以下是主要的全局生命周期:
- onLaunch(): 应用程序启动时触发,类似于 Vue 的
created()
阶段,但它在整个应用运行期间只会被调用一次。 - onShow(): 当应用从前台或后台重新回到前台时触发,相当于 Vue 的
activated()
方法的功能扩展。 - onHide(): 当应用退到后台时触发,类似于 Vue 的
deactivated()
方法的行为。
相比之下,Vue 并未提供专门针对整个应用级别的生命周期钩子,而是通过实例化组件的方式实现类似功能。
2. 页面级生命周期
对于单个页面而言,UniApp 和 Vue 的生命周期有显著相似之处,但也存在一些细微差别:
生命周期名称 | 描述 | UniApp 支持 | Vue 支持 |
---|---|---|---|
beforeCreate | 组件实例刚刚创建完成,尚未挂载 DOM 节点 | ✅ | ✅ |
created | 实例已完成数据观测、属性绑定和事件回调配置 | ✅ | ✅ |
mounted | 页面加载完成后立即执行的操作 | ✅ (注意 Tab 切换行为)[^4] | ✅ |
需要注意的是,在 UniApp 中,如果涉及 TabBar 页面跳转,则某些生命周期可能会表现出不同的特性。例如:
- 如果是从详情页返回至 Tab 页面,
mounted
不会被再次触发; - 使用
onShow
或者onTabItemTap
可以解决上述场景下的需求。
而在纯 Vue 开发环境下,无论何种路由切换方式都会正常经历完整的生命周期流程。
3. 特殊生命周期
除了常规的生命周期外,UniApp 还引入了几种特有的生命周期用于处理更复杂的应用逻辑:
- onLoad(options): 页面加载时触发,并接收传递过来的参数对象作为输入源。这是小程序生态中的重要组成部分之一[^1]。
- onUnload(): 用户离开当前页面时自动销毁资源释放内存空间。
- onPullDownRefresh() / onReachBottom(): 下拉刷新以及触底加载更多等功能的支持.
而传统意义上的 Vue 更加专注于构建 SPA(Single Page Application),因此缺乏直接对应的小程序交互模型设计思路。
4. 总结表格
下表进一步概括了两者之间的异同点:
功能模块 | Vue | UniApp |
---|---|---|
数据响应式机制 | 完整支持 | 基础上兼容 |
全局级别控制 | 缺乏统一入口 | 明确区分 App.vue 文件内的专用 API |
页面导航管理 | vue-router 控制 | uni.navigateTo 等内置函数 |
小程序专属能力 | 不具备 | 如 onLoad/onUnload 等特有能力 |
// 示例代码展示如何利用不同框架的特点编写业务逻辑
export default {
data () {
return { message: 'Hello' }
},
// Vue 标准写法
created () {
console.log('Component Created')
},
// UniApp 特定写法
onLoad (options) {
this.message += options.param || ''
console.log(`Page Loaded with params ${JSON.stringify(options)}`)
}
}
相关推荐
















