uniapp项目中小程序的生命周期

1. 小程序生命周期

这些生命周期函数是全局的,适用于整个小程序的运行过程。

1.1 onLaunch

  • 触发时机:小程序初始化完成时触发,全局只触发一次。
  • 用途:适合用于初始化操作,如获取用户信息、设置全局变量等。
  • 示例代码
js 复制代码
App({
    onLaunch: function () {
        console.log('小程序初始化完成');
        // 初始化操作
    }
});

1.2 onShow

  • 触发时机:小程序启动,或从后台进入前台显示时触发。
  • 用途:适合用于更新数据或恢复状态。
js 复制代码
App({
   onShow: function (options) {
       console.log('小程序进入前台');
       // options 是小程序启动时的参数
       console.log(options);
   }
});

1.3 onHide

  • 触发时机:小程序从前台进入后台时触发。
  • 用途:适合用于清理不需要的资源或暂停某些操作。
  • 示例代码
js 复制代码
App({
    onHide: function () {
        console.log('小程序进入后台');
        // 暂停操作或清理资源
    }
});

1.4 onError

  • 触发时机:小程序发生脚本错误或 API 调用失败时触发。
  • 用途:适合用于记录错误日志或进行错误处理。
  • 示例代码
js 复制代码
App({
    onError: function (msg) {
        console.log('小程序发生错误', msg);
        // 错误处理
    }
});

1.5 onPageNotFound

  • 触发时机:用户访问了一个不存在的页面时触发。
  • 用途:适合用于处理页面未找到的情况,如跳转到错误页面。
  • 示例代码
js 复制代码
App({
    onPageNotFound: function (info) {
        console.log('页面未找到', info);
        // 跳转到错误页面
        uni.redirectTo({
            url: '/pages/error/error'
        });
    }
});

2. 页面生命周期

页面生命周期函数是针对单个页面的,每个页面都可以定义自己的生命周期函数。

2.1 onLoad

  • 触发时机:页面加载时触发,每次页面加载都会触发一次。
  • 用途:适合用于获取页面参数、初始化页面数据等。
  • 示例代码
js 复制代码
Page({
    onLoad: function (options) {
        console.log('页面加载', options);
        // 初始化页面数据
    }
});

2.2 onShow

  • 触发时机:页面显示时触发,每次页面显示都会触发一次。
  • 用途:适合用于更新页面数据或恢复页面状态。
  • 示例代码
js 复制代码
Page({
    onShow: function () {
        console.log('页面显示');
        // 更新页面数据
    }
});

2.3 onHide

  • 触发时机:页面隐藏时触发,每次页面隐藏都会触发一次。
  • 用途:适合用于清理页面资源或暂停某些操作。
  • 示例代码
javascript 复制代码
Page({
    onHide: function () {
        console.log('页面隐藏');
        // 暂停操作或清理资源
    }
});

2.4 onUnload

  • 触发时机:页面卸载时触发,每次页面卸载都会触发一次。
  • 用途:适合用于清理页面资源。
  • 示例代码
js 复制代码
Page({
    onUnload: function () {
        console.log('页面卸载');
        // 清理页面资源
    }
});

2.5 onReachBottom

  • 触发时机:页面上拉触底时触发。
  • 用途:适合用于加载更多数据
  • 示例代码
js 复制代码
Page({
    onReachBottom: function () {
        console.log('页面上拉触底');
        // 加载更多数据
    }
});

3. 组件生命周期

组件也有自己的生命周期函数,用于管理组件的加载、显示、隐藏等状态。

3.1 created

  • 触发时机:组件实例被创建时触发
  • 用途:适合用于初始化组件数据。
  • 示例代码
javascript 复制代码
Component({
    created: function () {
        console.log('组件创建');
        // 初始化组件数据
    }
});

3.2 attached

  • 触发时机:组件被插入页面节点树时触发。
  • 用途:适合用于获取页面数据或进行页面操作。
  • 示例代码
javascript 复制代码
Component({
    attached: function () {
        console.log('组件插入页面');
        // 获取页面数据
    }
}

3.3 ready

  • 触发时机:组件布局完成后触发。
  • 用途:适合用于操作组件的 DOM 元素。
  • 示例代码
js 复制代码
Component({
    ready: function () {
        console.log('组件布局完成');
        // 操作组件的 DOM 元素
    }
});

3.4 detached

  • 触发时机:组件从页面节点树中移除时触发。
  • 用途:适合用于清理组件资源。
  • 示例代码
javascript 复制代码
Component({
    detached: function () {
        console.log('组件移除');
        // 清理组件资源
    }
});

4. 生命周期的优先级

  • 全局生命周期onLaunchonShowonHide 等)的触发优先级高于 页面生命周期onLoadonShowonHide 等)。
  • 页面生命周期 的触发优先级高于 组件生命周期createdattachedready 等)。
相关推荐
刘发财2 小时前
弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
前端·javascript·github
牛奶5 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶5 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
Kagol7 小时前
🎉OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用!
前端·开源·agent
GIS之路8 小时前
ArcGIS Pro 中的 notebook 初识
前端
JavaGuide9 小时前
7 道 RAG 基础概念知识点/面试题总结
前端·后端
ssshooter9 小时前
看完就懂 useSyncExternalStore
前端·javascript·react.js
格砸10 小时前
从入门到辞职|从ChatGPT到OpenClaw,跟上智能时代的进化
前端·人工智能·后端
Live0000010 小时前
在鸿蒙中使用 Repeat 渲染嵌套列表,修改内层列表的一个元素,页面不会更新
前端·javascript·react native
柳杉10 小时前
使用Ai从零开发智慧水利态势感知大屏(开源)
前端·javascript·数据可视化