小程序生命周期函数

生命周期

生命周期是指一个小程序从创建到销毁的过程中一系列的操作

小程序的两种生命周期

在小程序中 ,通过App()来注册一个小程序 ,通过Page()来注册一个页面
  • 小程序的生命周期

注册小程序。接受一个 Object 参数,其指定小程序的生命周期回调等。
App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。

参数

属性类型默认值说明
onLaunchfunction生命周期回调——监听小程序初始化。
onShowfunction生命周期回调——监听小程序启动或切前台
onHidefunction生命周期回调——监听小程序切后台
onErrorfunction错误监听函数
onPageNotFoundfunction页面不存在监听函数
onUnhandledRejectionfunction未处理的 Promise 拒绝事件监听函数
onThemeChangefunction监听系统主题变化
其他any开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问

示例

App({
  onLaunch (options) {
    // 小程序初始化完成时触发,全局只触发一次。
  },
  onShow (options) {
    // 小程序启动,或从后台进入前台显示时触发。
  },
  onHide () {
    //小程序从前台进入后台时触发。
  },
  onError (msg) {
    // 小程序发生脚本错误或 API 调用报错时触发。
  },
  onPageNotFound (res) {
    // 小程序要打开的页面不存在时触发。
  },
  onUnhandledRejection () {
	// 小程序有未处理的 Promise 拒绝时触发。
  },
  onThemeChange () {
	// 系统切换主题时触发。
  },
  globalData: 'I am global data'
})

getApp()方法

获取到小程序全局唯一的 App 实例

示例:

var appInstance = getApp()
console.log(appInstance.globalData) 

注意:

  • 不要在定义于 App() 内的函数中,或调用 App 前调用 getApp() ,使用 this 就可以拿到 app 实例。

  • 通过 getApp() 获取实例之后,不要私自调用生命周期函数。

  • 页面的生命周期

注册小程序中的一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等

参数

属性类型说明
dataObject页面的初始数据
optionsObject页面的组件选项,同 Component 构造器 中的 options
onLoadfunction生命周期回调—监听页面加载
onShowfunction生命周期回调—监听页面显示
onReadyfunction生命周期回调—监听页面初次渲染完成
onHidefunction生命周期回调—监听页面隐藏
onUnloadfunction生命周期回调—监听页面卸载
onPullDownRefreshfunction监听用户下拉动作
onReachBottomfunction页面上拉触底事件的处理函数
onShareAppMessagefunction用户点击右上角转发
onShareTimelinefunction用户点击右上角转发到朋友圈
onAddToFavoritesfunction用户点击右上角收藏
onPageScrollfunction页面滚动触发事件的处理函数
onResizefunction页面尺寸改变时触发,详见 响应显示区域变化
onTabItemTapfunction当前是 tab 页时,点击 tab 时触发
其他any开发者可以添加任意的函数或数据到 Object 参数中,在页面的函数中用 this 可以访问

示例:

Page({
  data: {
    text: "This is page data."
    // data 是页面第一次渲染使用的初始数据。
  },
  // 生命周期回调函数
  onLoad: function(options) {
    // 页面加载时触发。一个页面只会调用一次
  },
  onShow: function() {
    // 页面显示/切入前台时触发
  },
  onReady: function() {
    // 页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互
  },
  onHide: function() {
    //页面隐藏/切入后台时触发。
  },
  onUnload: function() {
    // 页面卸载时触发。
  },
  onPullDownRefresh: function() {
    // 监听用户下拉刷新事件。
  },
  onReachBottom: function() {
    // 监听用户上拉触底事件
  },
  onShareAppMessage: function () {
    // 监听用户点击页面内转发按钮(button 组件 open-type="share")或右上角菜单“转发”按钮的行为,并自定义转发内容
  },
  onPageScroll: function() {
    //监听用户滑动页面事件
  },
  onResize: function() {
    // 小程序屏幕旋转时触发。
  },
})

getCurrentPages()方法

获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。

注意:

  • 不要尝试修改页面栈,会导致路由以及页面状态错误。
  • 不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。

总结

onLoad,onReady,onShow,onHide 的区别

  • onLoad: 页面加载时触发,且只发生一次,有些数据实时性要求不高可以onlaod里面触发对应的请求

  • onReady:页面初次渲染之后触发,一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互

  • onShow: 定义是页面显示,切入前台触发,可以理解为页面出现一次,他就被调用一次包括你前进后退到这个页面,适合有些实时性的数据,例如订单列表数据

  • onHide: 切换页面的时候你就会发现该函数被调用,这个页面切换到别的页面就会触发(注意切换不是关闭)

<think>好的,我现在需要帮助用户了解微信小程序onShow生命周期函数的使用说明、文档和示例。首先,我得回忆一下相关的知识,并结合提供的引用内容来组织回答。 根据用户提供的引用,引用[1]提到onShow是在小程序启动或从后台进入前台时触发的。引用[2]解释了小程序生命周期的基本概念,而引用[3]和[4]涉及注册App实例时的操作和生命周期函数的总体内容。用户可能想知道onShow的具体应用场景,如何编写代码示例,以及注意事项。 首先,我需要明确onShow的定义和触发时机。然后,应该提供一个简单的代码示例,展示如何在App或Page中使用onShow。接下来,用户可能想知道onShow与其他生命周期函数的区别,比如onLaunch和onHide。此外,可能还需要提到使用场景,比如恢复数据、更新内容等。 需要确保回答结构清晰,分点说明,并包含示例代码。同时,根据用户的引用内容,引用[3]提到在生命周期函数中处理进入场景的参数,所以可能需要说明如何通过options获取场景值。但根据问题,用户可能更关注onShow本身,所以是否需要深入场景值要看是否有必要。 还要注意用户的问题中提到了文档和示例,所以应该引导用户参考官方文档,并给出示例代码。可能还需要比较onShow在App和Page中的不同使用方式,比如在App中监听整个小程序的前后台切换,而在Page中监听页面的显示。 最后,生成相关问题,帮助用户进一步学习,比如与onHide的区别、使用场景、参数获取等。 现在需要检查是否有遗漏的部分,比如是否提到了参数options的使用,或者是否需要强调onShow在App和Page中的不同。同时,确保代码示例正确,符合微信小程序的语法,比如在App的onShow中使用options.scene获取场景值,而在Page的onShow中可能不需要参数。 总结回答的结构应该是:定义、触发时机、代码示例(App和Page)、使用场景、注意事项,然后相关问题。确保引用正确的来源,比如引用[1]和[3]。</think>### 小程序生命周期函数 onShow 使用说明 #### 定义与触发时机 `onShow` 是微信小程序生命周期函数之一,主要用于监听小程序的显示状态: 1. **小程序启动时**(首次进入或冷启动)会自动触发。 2. **从后台切换回前台时**(如用户从其他应用返回小程序)也会触发[^1][^4]。 #### 代码示例 ##### 在 App 级别使用(`app.js`中) ```javascript App({ onShow(options) { // options 包含进入小程序的场景信息 console.log('小程序显示,场景值:', options.scene); // 例如:恢复用户登录状态或更新数据 this.globalData.isActive = true; }, globalData: { isActive: false } }); ``` 通过 `options.scene` 可获取进入小程序的场景值(如扫码、分享卡片等),用于判断入口来源[^3]。 ##### 在 Page 级别使用(页面.js中) ```javascript Page({ onShow() { // 页面显示时执行,例如刷新数据 this.setData({ content: '页面已显示' }); this.loadData(); }, loadData() { // 模拟网络请求 wx.request({ url: 'https://api.example.com/data', success: (res) => { this.setData({ list: res.data }); } }); } }); ``` #### 使用场景 1. **恢复页面状态**:如从后台返回时重新加载数据。 2. **更新动态内容**:如实时通知、未读消息数。 3. **监听场景值**:根据用户进入方式(扫码、分享)定制逻辑。 #### 注意事项 1. **与 `onLaunch` 的区别**:`onLaunch` 仅在首次启动时触发,`onShow` 在每次显示时触发(包括首次启动)[^1]。 2. **避免重复执行**:若逻辑需仅执行一次(如初始化),应结合 `onLaunch` 使用。 3. **轻量化操作**:避免在 `onShow` 中执行耗时任务,影响用户体验。 #### 官方文档 参考微信小程序官方文档:[生命周期函数](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E5%87%BD%E6%95%B0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值