小程序生命周期函数

269 阅读4分钟

微信小程序 中,生命周期函数分为 小程序生命周期页面生命周期,它们帮助开发者管理整个小程序的运行过程以及单个页面的显示、交互和销毁。以下是小程序和页面的生命周期函数的详细说明。

1. 小程序生命周期

(1)onLaunch(options)

  • 触发时机:小程序初始化时触发(只触发一次),在 App 实例化时触发。

  • 参数options 包含启动小程序时的 query 参数,可以用来获取小程序的启动参数。

  • 用途:通常用于小程序的初始化工作,例如用户授权、全局数据初始化等。

App({
  onLaunch(options) {
    console.log('小程序启动', options);
    // 做一些初始化工作,例如获取用户信息、保存启动参数等
  }
});

(2)onShow(options)

  • 触发时机:小程序从后台进入前台时触发。每次小程序切换到前台都会触发。

  • 参数options 包含从启动页面跳转过来的参数。

  • 用途:适用于小程序恢复前台时需要刷新或重新加载数据的场景,例如记录用户行为、重新获取数据等。

App({
  onShow(options) {
    console.log('小程序进入前台', options);
  }
});

(3)onHide()

  • 触发时机:小程序从前台进入后台时触发。每次小程序切换到后台都会触发。

  • 用途:适用于小程序切换到后台时,保存数据、停止定时任务、暂停音视频播放等操作。

App({
  onShow(options) {
    console.log('小程序进入前台', options);
  }
});

(3)onError(msg)

  • 触发时机:小程序发生脚本错误、API 调用失败等情况下触发。

  • 参数msg 是错误信息,通常是一个字符串,包含了错误的详细描述。

  • 用途:适用于收集错误日志和追踪小程序中的异常。

App({
  onError(msg) {
    console.log('小程序发生错误', msg);
    // 收集并上传错误日志
  }
});

(4)onPageNotFound(options)

  • 触发时机:当小程序跳转到一个不存在的页面时触发。

  • 参数options 包含页面的路径和查询参数,可以用于自定义页面的跳转处理。

  • 用途:用于处理页面不存在的情况,通常可以跳转到一个自定义的 404 页面。

App({
  onPageNotFound(options) {
    console.log('页面不存在', options);
    // 自定义 404 页面或跳转到首页
  }
});

2. 页面生命周期

页面生命周期函数用于管理单个页面的生命周期。每个页面都会有自己的生命周期函数,通常用于页面数据的加载、显示、销毁等操作。

(1)onLoad(options)

  • 触发时机:页面加载时触发,通常会在页面初次渲染时触发一次。

  • 参数options 包含页面路径的查询参数,通常用于获取跳转时传递的数据。

  • 用途:适用于页面初始化,通常用于请求数据、初始化页面状态等。

Page({
  onLoad(options) {
    console.log('页面加载', options);
    // 获取传递的参数,进行数据请求等
  }
});

(2)onShow()

  • 触发时机:页面每次显示时触发(包括从后台切换到前台时)。

  • 用途:适用于页面需要重新加载数据或刷新视图的场景。

Page({
  onShow() {
    console.log('页面显示');
    // 刷新数据或重新请求接口
  }
});

(3)onReady()

  • 触发时机:页面首次渲染完成时触发,即页面的视图已经完全创建完成,DOM 已经渲染完毕。

  • 用途:适用于页面渲染完成后的操作,可以进行页面交互的初始化,例如获取页面尺寸或执行动画等。

Page({
  onReady() {
    console.log('页面渲染完成');
    // 页面渲染完毕后可以执行一些操作
  }
});

(4)onHide()

  • 触发时机:页面进入后台时触发,通常是用户离开页面时(例如返回上一页或切换到其他页面)。

  • 用途:适用于页面切换时,保存页面状态或暂停不必要的操作。

Page({
  onHide() {
    console.log('页面隐藏');
    // 保存页面状态或停止某些操作
  }
});

(5)onUnload()

  • 触发时机:页面卸载时触发,通常是页面销毁时(例如用户退出当前页面)。

  • 用途:适用于页面销毁时清理资源,释放内存,移除定时器等。

Page({
  onUnload() {
    console.log('页面卸载');
    // 清理定时器、取消网络请求等
  }
});

(6)onPullDownRefresh()

  • 触发时机:用户触发下拉刷新时调用,通常是用户下拉页面时,触发页面数据的刷新。

  • 用途:适用于页面刷新时的操作,例如重新获取数据。

Page({
  onPullDownRefresh() {
    console.log('页面下拉刷新');
    // 执行数据刷新逻辑
    wx.stopPullDownRefresh(); // 结束下拉刷新
  }
});

(7)onReachBottom()

  • 触发时机:当页面滚动到底部时触发,通常用于分页加载更多数据。

  • 用途:适用于加载更多数据,进行分页操作。

Page({
  onReachBottom() {
    console.log('页面滚动到底部');
    // 加载更多数据
  }
});

(8)onShareAppMessage()

  • 触发时机:用户点击右上角分享按钮时触发,返回一个自定义的分享内容。

  • 用途:适用于自定义分享功能,可以返回分享的标题、路径、图标等信息。

Page({
  onShareAppMessage() {
    return {
      title: '分享标题',
      path: '/pages/index/index'
    };
  }
});