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 等)。
相关推荐
东风破_3 小时前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_4 小时前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
蒲公英eric4 小时前
从客户端到服务端:DVWA DOM 型 XSS 模块完整漏洞分析教程
前端·web安全·ai·xss·dvwa·ai安全
单线程_014 小时前
从案例分析 Vue3 Tokenizer+Parser 源码三
前端·javascript·vue.js
顶点多余5 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
Setsuna_F_Seiei5 小时前
前端转型 Agent 开发 03 之 Agent Tools - 给 Agent 装上手脚
前端·agent·ai编程
jay神5 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
kyriewen8 小时前
我装了30多个Skill,给AI安排了8个岗位
前端·javascript·ai编程
风骏时光牛马8 小时前
大模型落地实践中的技术选型思路与方案对比
前端
IT_陈寒8 小时前
Vite打包时的静态资源坑,我帮你踩过了
前端·人工智能·后端