微信小程序生命周期

news/2024/7/20 3:53:14 标签: 微信小程序, 小程序

小程序生命周期

  • 小程序生命周期包含了三个部分?
    • 应用级别的生命周期 - App的生命周期
    • 页面级别的生命周期 - 页面(page)的生命周期
    • 组件(component)的生命周期


小程序生命周期包含了三个部分?

应用级别生命周期 (整个APP的生命周期)
页面级别生命周期(单个页面page的生命周期)
组件级别生命周期(组件component的生命周期)

应用级别的生命周期 - App的生命周期

必须在 app.js 中调用,必须调用且只能调用一次。

  • onLaunch小程序初始化完成时触发,全局只触发一次。

  • 云开发的初始化 方便其他页面直接调用云开发的SDK

  • 发送请求获取用户的个人信息 方便其他页面使用

  • 获取本地存储数据 方便其他页面使用

  • onShow小程序启动或切前台显示时触发

  • 重新启动定时器 继续定时执行功能

  • 重新触发异步 获取新的数据

  • 重新启动播放器等

  • onHide小程序从前台进入后台时触发

  • 当暂停定时器

  • 暂停视频音频的播放

  • onError小程序发生脚本错误或 API 调用报错时触发。

  • 收集错误信息 发送到后台 进行错误日志的记录

  • 弹出窗口提示用户

  • onPageNotFound:小程序要打开的页面不存在时触发。

监听报错,弹出窗口提示用户
监听报错,重新跳转页面

  • onUnhandledRejection:小程序有未处理的 Promise 拒绝时触发。

用在统一捕获处理 可以在该生命周期中处理错误情况 ,一般是由于异步代码出错导致的

  • onThemeChange:系统切换主题时触发。

小程序可以跟着主题的切换 也改变小程序的UI风格,使之体验更好!

页面级别的生命周期 - 页面(page)的生命周期

1.onLoad:页面加载时执行,只执行一次;
2.onShow:页面展示时执行,执行多次;
3.onReady:页面初次渲染时执行,只执行一次;
4.onHide:页面从前台进入后台时执行;
5.onUnload:页面卸载时执行

注意🛑
当切换页面需要多次渲染数据改变状态,建议在onShow中使用,当只需初始化一次的时候,可在onLoad或者onReady中使用。当需要清除定时器时,可在onUnload中使用。
执行顺序
onLoad --> onShow --> onReady --> onHide

组件(component)的生命周期

created(重要):组件实例刚刚被创建好时触发。此时,组件数据 this.data 就是在 Component 构造器中定义的数据 data 。 此时还不能调用 setData 。 通常情况下,这个生命周期只应该用于给组件 this 添加一些自定义属性字段。
attached(重要):在组件完全初始化完毕、进入页面节点树后被触发
此时, this.data 已被初始化为组件的当前值。这个生命周期很有用,绝大多数初始化工作可以在这个时机进行。
ready:在组件的视图层布局完成后执行
moved:在组件实例被移动到节点树另一个位置时执行
detached(重要):在组件离开页面节点树后被触发
error:每当组件方法抛出错误时执行

总结生命周期执行流程

  1. 打开小程序
    (App)onLaunch --> (App)onShow --> (Pages)onLoad --> (Pages)onShow --> (pages)onReady

  2. 切换页面:
    (Pages)onHide --> (Next)onLoad --> (Next)onShow --> (Next)onReady

  3. 返回上一个页面
    (curr)onUnload --> (pre)onShow

  4. 离开小程序
    (App)onHide


http://www.niftyadmin.cn/n/226120.html

相关文章

数据结构_第十一关:二叉树的链式结构

目录 1.二叉树链式结构的实现 1.1前置说明 1.2二叉树的遍历 1.3二叉树遍历的实现: 1)先序遍历、中序遍历、后续遍历代码如下 2)层序遍历: 1.4结点个数以及高度的计算 1)求二叉树的总节点: 2&#…

为什么要code review

1. 简介 本文将介绍 Code Review的相关内容,包含为什么要Code Review,以及Code Review主要review哪些部分的内容,之后讲述如何才能形成一套比较好的Code Review规则和流程。后续讲述了Code review中一些可以遵守的比较好的规则,最…

WebSocket-Node实现WebSocket协议方法

WebSocket-Node是一个用于实现WebSocket协议的Node.js模块,提供了WebSocket客户端和服务端的实现。下面是一个简单的示例,演示如何使用WebSocket-Node实现一个简单的WebSocket服务器: javascript const WebSocket require(websocket).serv…

分布式事务Seata实践入门

1 前言 现在应用基本上都是分布式部署,那么针对分布式事务问题,也有对应的解决方案。经过简单的调研,最后选择了阿里的 Seata 组件,来实现分布式事务。 Seata是2019年1月份,蚂蚁金服和阿里巴巴共同开源的分布式事务解…

JavaEE-网络原理之UDP协议

目录UDP报文结构UDP的特点无连接不可靠面向数据报缓冲区基于UDP的应用层协议UDP报文结构 报头大小为8个字节. 16位源端口号与16位目的端口号: 16个比特位可表示65536个端口号,分别为0-65535,其中1-1023为为专属端口号,用来为一些知名服务器提供服务,例如: HTTP服务器专属端口号…

细粒度软件缺陷预测模型构建方法

在软件缺陷预测领域,粒度指的是缺陷库中每条样本的项目粒度.其中可以分为类粒度、文件粒度或者包粒度等。不同的开发语言有不同的层级的模块粒度,在软件缺陷预测领域,一般来说,在预测效果能够满足要求的情况下,粒度越小…

数字化和自动化的潮流:外贸企业如何应对?

当今世界正面临着数字化和自动化的浪潮,这些技术的应用正在深刻地改变着各个领域的生产、交易和管理方式。尤其在外贸行业,数字化和自动化的应用已成为一种趋势和必然。在本文中,我们将探讨数字化和自动化对外贸行业的影响和挑战,…

C++---状态压缩dp---小国王(每日一道算法2023.4.15)

注意事项: 状压dp难度警告! 本题为"状态压缩dp—蒙德里安的梦想"的近似题,建议先阅读这篇文章并理解。 题目: 在 nn 的棋盘上放 k 个国王,国王可攻击相邻的 8 个格子,求使它们无法互相攻击的方案…