目 录CONTENT

文章目录

微信小程序开发 —— App、Page、Component 生命周期

邱少羽梦
2025-03-23 / 0 评论 / 0 点赞 / 48 阅读 / 5352 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2025-03-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

在微信小程序中,生命周期 是指小程序从启动到销毁的整个过程,包括 App 生命周期Page 生命周期Component 生命周期。以下是详细的分类和说明:


1. App 生命周期

App 生命周期是指整个小程序的全局生命周期事件,主要包括以下事件:

事件说明
onLaunch小程序初始化完成时触发(全局只触发一次)。
onShow小程序启动时,或从后台进入前台显示时触发。
onHide小程序从前台进入后台时触发。
onError小程序发生脚本错误或 API 调用失败时触发。
onPageNotFound小程序要打开的页面不存在时触发。
onUnhandledRejection小程序未处理的 Promise 拒绝(rejection)时触发。
onThemeChange系统主题变化时触发(例如从浅色模式切换到深色模式)。

2. Page 生命周期

Page 生命周期是指单个页面的生命周期事件,主要包括以下事件:

事件说明
onLoad页面加载时触发,一个页面只会调用一次。
onShow页面显示时触发,每次打开页面都会调用。
onReady页面初次渲染完成时触发,一个页面只会调用一次。
onHide页面隐藏时触发,例如跳转到其他页面或小程序进入后台。
onUnload页面卸载时触发,例如页面被关闭或跳转到其他页面。
onPullDownRefresh用户下拉刷新时触发。
onReachBottom用户上拉触底时触发。
onShareAppMessage用户点击右上角分享时触发。
onPageScroll页面滚动时触发。
onResize页面尺寸变化时触发(例如屏幕旋转)。
onTabItemTap点击当前页面的 tab 时触发。

3. Component 生命周期

Component 生命周期是指自定义组件的生命周期事件,主要包括以下事件:

事件说明
created组件实例刚刚被创建时触发,此时还不能调用 setData
attached组件实例进入页面节点树时触发,此时可以调用 setData
ready组件布局完成时触发,此时可以获取节点信息。
moved组件实例被移动到节点树另一个位置时触发。
detached组件实例从页面节点树移除时触发。
error组件方法或事件处理函数抛出错误时触发。

4. 生命周期流程图

以下是微信小程序的生命周期流程图:

(1) App 生命周期流程

启动小程序 → onLaunch → onShow → 运行中 → onHide → 进入后台 → onShow → 恢复前台

(2) Page 生命周期流程

页面加载 → onLoad → onShow → onReady → 页面显示 → onHide → 页面隐藏 → onUnload → 页面卸载

(3) Component 生命周期流程

组件创建 → created → attached → ready → 组件运行 → moved → detached → 组件销毁

5. 示例代码

(1) App 生命周期示例

App({
  onLaunch(options) {
    console.log('小程序初始化完成', options);
  },
  onShow(options) {
    console.log('小程序显示', options);
  },
  onHide() {
    console.log('小程序进入后台');
  },
  onError(error) {
    console.error('小程序发生错误', error);
  }
});

(2) Page 生命周期示例

Page({
  onLoad(options) {
    console.log('页面加载', options);
  },
  onShow() {
    console.log('页面显示');
  },
  onReady() {
    console.log('页面初次渲染完成');
  },
  onHide() {
    console.log('页面隐藏');
  },
  onUnload() {
    console.log('页面卸载');
  },
  onPullDownRefresh() {
    console.log('用户下拉刷新');
  },
  onReachBottom() {
    console.log('用户上拉触底');
  }
});

(3) Component 生命周期示例

Component({
  lifetimes: {
    created() {
      console.log('组件创建');
    },
    attached() {
      console.log('组件进入页面节点树');
    },
    ready() {
      console.log('组件布局完成');
    },
    detached() {
      console.log('组件从页面节点树移除');
    }
  }
});

6. 注意事项

  1. 生命周期顺序

    • App 生命周期优先于 Page 生命周期,Page 生命周期优先于 Component 生命周期。
    • 例如,小程序启动时,先触发 ApponLaunch,再触发 PageonLoad
  2. onLoadonShow 的区别

    • onLoad 只会在页面加载时触发一次。
    • onShow 会在每次页面显示时触发。
  3. onReady 的使用

    • onReady 是页面初次渲染完成时触发,适合在此处操作页面 DOM 或初始化动画。
  4. onUnload 的用途

    • onUnload 适合用于清理定时器、取消网络请求等操作。
  5. Component 生命周期的兼容性

    • Component 生命周期需要基础库版本 1.6.3 及以上支持。

通过理解和使用这些生命周期事件,可以更好地控制小程序、页面和组件的初始化、运行和销毁过程,提升应用的性能和用户体验。

0

评论区