uniapp页面生命周期函数执行时机

本文详细介绍了uniapp中各个生命周期函数的执行时机,如onLoad用于初始化数据,onShow适合处理页面展示时的操作,强调了在不同场景下的合理选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、总览 

 

 二、分析

通过浏览器控制台输出得到:

 从上述实验我们可以得到以下结论:

  1. onLoad 对应 created, onReady 对应 mounted, 不过uniapp页面生命周期函数执行时机略早于组件生命周期函数,在页面级vue文件中可优先考虑使用页面级生命周期函数。
  2. 需要依赖页面传参逻辑的需使用onLoad
  3. 在切换浏览器窗口时会频繁调用 onHide 和 onShow, 而其他生命周期函数则不会再调用,所以比较保守的做法是把接口调用写在onShow里,这样每次页面展示都会获取最新数据。

三、代码 

  onInit(){
    //仅百度小程序
    console.log('this is oninit--------'+ new Date().getTime())
  },
  beforeCreate() {
    console.log('// 进入路由')
    console.log('this is beforeCreate--------'+ new Date().getTime())
  },
  onLoad(query){
    //data, computed, method, prop, slots已经设置完成, 参数为上个页面传递的数据
    console.log('this is onload--------'+ new Date().getTime())
  },
  onShow(){
    //页面每次出现在屏幕上都触发,切换窗口会频繁触发onHide和onShow
    console.log('onshow获取$el:'+this.$refs.myNav) // 第一次进入页面为undefined,切换窗口则后续能获取到
    console.log('this is onshow-------'+ new Date().getTime())
  },
  created(){
    console.log('this is created-------'+ new Date().getTime())
  },
  beforeMount(){
    console.log('this is beforeMount-------'+ new Date().getTime())
  },

  onReady(){
    //页面渲染完成,dom树可用
    console.log('this is onready-------'+ new Date().getTime())
  },
  mounted(){
    console.log('this is mounted-------'+ new Date().getTime())
  },

  onHide(){
    // 页面隐藏,切换浏览器窗口时调用
    console.log('// 切换页面')
    console.log('this is onhide-------'+ new Date().getTime())
  },
  onUnload(){
    // 页面卸载, 切换路由时调用
    console.log('// 离开路由')
    console.log('this is onUnload-------'+ new Date().getTime())
  },
  beforeDestroy(){
    console.log('this is beforeDestroy-------'+ new Date().getTime())
  },
  destroyed(){
    console.log('this is destroyed-------'+ new Date().getTime())
  },

参考文档:

页面简介 | uni-app官网

### UniApp 页面生命周期详解 #### onLoad 当页面加载时触发此事件,这通常是请求数据或初始化页面的理想时机。在此阶段,页面参数已经解析完毕,可以通过 `this.$route.query` 或者 `this.options` 获取页面传参[^2]。 ```javascript export default { onLoad(options) { console.log('Page loaded', options); // 可以在这里发起网络请求获取数据 } } ``` #### onReady 页面首次渲染完成时触发该钩子函数,在这个时刻可以安全地执行依赖于DOM的操作,比如动画效果或是第三方插件的初始化。 ```javascript export default { onReady() { console.log('Page ready'); // 执行依赖于 DOM 的操作 } } ``` #### onShow 每当页面显示时都会触发此事件,无论是初次访问还是从后台切回前台均会触发。适合用来处理一些需要每次进入页面都重新计算的内容。 ```javascript export default { onShow() { console.log('Page shown'); // 更新实时数据或其他逻辑 } } ``` #### onHide 页面即将隐藏时触发,例如点击返回按钮离开当前页或将应用切换至后台运行状态前。可用于暂停某些耗电功能如视频播放等。 ```javascript export default { onHide() { console.log('Page hidden'); // 停止计时器、关闭音频/视频流等 } } ``` #### onUnload 页面卸载时触发,通常用于清理不再使用的资源,取消未完成的网络请求,防止内存泄漏等问题的发生。 ```javascript export default { onUnload() { console.log('Page unloaded'); // 清理定时器、解除绑定事件等 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值