微信小程序开发系列(二十七)·小程序生命周期详细介绍

目录

1.  小程序生命周期介绍

2.  应用生命周期

3.  页面生命周期


1.  小程序生命周期介绍

        一个小程序完整的生命周期由 应用生命周期页面生命周期组件生命周期 三部分来组成。

应用生命周期:是指应用程序进程从创建到消亡的整个过程。

小程序的生命:周期指的是小程序从启动到销毁的整个过程。

        小程序生命周期伴随着一些函数,这些函数由小程序框架本身提供,被称为生命周期函数,生命周期函数会按照顺序依次自动触发调用。帮助程序员在特定的时机执行特定的操作,辅助程序员完成一些比较复杂的逻辑。

2.  应用生命周期

        应用生命周期通常是指一个小程序从启动→运行→销毁的整个过程。

        应用生命周期伴随着一些函数,我们称为应用生命周期函数,应用生命周期函数需要在app.js 文件的App()方法中进行定义,App() 方法必须在 app.js 中进行调用,主要用来注册小程序。

        应用生命周期函数由onLaunch、onShow、onHide三个函数组成。

        找到app.js文件,将之前app.js文件代码注释掉或者删掉,输入app,选择带有方框的APP:

        这样能快速填充我们所要需要编写的内容:

        编写代码:


// 将之前app.js文件代码注释掉或者删掉
App({

  /**
   * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
   */
  onLaunch: function () {
    console.log('onLaunch 小程序初始化完成时')
  },

  /**
   * 当小程序启动,或从后台进入前台显示,会触发 onShow
   */
  onShow: function (options) {
    console.log('onShow 小程序启动,或从后台进入前台显示')
  },

  /**
   * 当小程序从前台进入后台,会触发 onHide
   */
  onHide: function () {
    console.log('onHide 当小程序从前台进入后台')
  },

  /**
   * 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
   */
  onError: function (msg) {
    
  }
})

        点击编译,首先我们会发现,数据打印出来了,但是内容还有系统本身打印的内容,我们可以进行如下操作:

        这样可以屏蔽到系统打印的内容,若想返回可以点击叉号,进行将系统打印显示出来:

        可以看到此时,只触发了“onLaunch”和“onShow”,那是因为“onHide”是当小程序从前台进入后台触发的,所以我们可以点击:

        会发现此时触发了“onHide”:

        可以任意点击黄色框选部分,返回之前页面:

会发现:

当进行冷启动时,才会触发 onLaunch 钩子函数

如果是热启动,不会触发 onLaunch 钩子函数,会触发 onShow 钩子函数

因此 onLaunch 全局只触发一次

3.  页面生命周期

        页面生命周期就是指小程序页面从 加载 → 运行 → 销毁的整个过程。

        页面生命周期函数需要在 Page() 方法进行定义。

小程序中的页面生命周期包括以下几个主要阶段:

①  onLoad:页面加载时触发,一般在这个阶段可以进行页面初始化操作,如数据加载、初始化变量等。

②  onShow:页面显示时触发,每次打开页面都会触发。在这个阶段可以进行页面数据的刷新操作,如从后台切换回前台时需要更新数据。

③  onReady:页面初次渲染完成时触发,表示页面已经准备好,可以和视图层进行交互。一般在这个阶段可以进行页面渲染完毕后的操作。

④  onHide:页面隐藏时触发,当navigateTo或底部tab切换时会触发。可以在这个阶段进行一些页面隐藏时需要执行的操作,如清除定时器、暂停音视频播放等。

⑤  onUnload:页面卸载时触发,当redirectTo或navigateBack时会触发。在这个阶段可以进行页面卸载前的清理工作,如清除定时器、释放资源等。

⑥  onPullDownRefresh:用户下拉页面时触发,在这个阶段可以进行下拉刷新操作,一般用于实现页面的下拉刷新功能。

⑦  onReachBottom:页面上拉触底时触发,一般用于实现页面的上拉加载更多功能。

⑧  onShareAppMessage:用户点击分享按钮或右上角菜单分享时触发,可以自定义分享内容和链接。

⑨  onPageScroll:页面滚动时触发,可以获取页面滚动的位置信息,实现一些滚动相关的效果。

⑩  onResize:页面尺寸变化时触发,一般用于监听页面尺寸的变化,如横竖屏切换时触发。

主要触发流程:

        找到首页,找到“index.js”文件,将page文件内容删除:

        输入page,找到带有方框的page:

        其会帮我们自动填充代码:


Page({

  /**
   * 页面的初始数据
   */
  data: {
    
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    
  }
})

        将app.js的文件注释掉或者删除,在index.js文件中编写代码:


Page({

  /**
   * 页面的初始数据
   */
  data: {
    
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log('onLoad 页面创建的时候执行')
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    console.log('onReady 页面初次渲染完成的时候执行,代表页面已经准备妥当,可以和视图层来进行交互')      
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    console.log('onShow 页面在前台展示的时候执行')   
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
    console.log('onHide 页面隐藏的时候执行')    
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
    console.log('onUnload 页面卸载的时候执行')    
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    
  }
})

        此时代码运行结果:

        使用<navigator> 组件,用于实现页面跳转到列表页面并且采用重定向(redirect)方式跳转。

 redirect:销毁当前页面,跳转到下一个页面。


<navigator url="/pages/list/list" open-type="redirect">跳转到列表页面</navigator>

        点击“跳转到列表页面”:

        使用<navigator> 组件,用于实现页面跳转到列表页面并且采用navigate方式跳转。

navigate:保留当前页面,跳转到下一个页面

        编写代码:

<navigator url="/pages/list/list" open-type="navigate">navigate 跳转到列表页面</navigator>

        点击“navigate 跳转到列表页面”:

        点击:

         出现:

参考:微信小程序开发系列(十一)·小程序页面的跳转设置以及参数传递-CSDN博客

微信小程序开发_时光の尘的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/447110.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python——By.ID/By.NAME

一、通过元素的id属性来定位元素 from selenuim import webdriver from selenuim.webdriver.common.by import Bydriver webdriver.Chrome() driver.maximize_window() driver.get(http://xxx) time.sleep(3)# 通过By.ID找到唯一页面元素后&#xff0c;输入abcd driver.find_…

简析内部审计数字化转型的方法和路径

简析内部审计数字化转型的方法和路径 内部审计是一种独立的、客观的确认和咨询活动&#xff0c;包括鉴证、识别和分析问题以及提供管理建议和解决方案。狭义的数字化转型是指将企业经营管理和业务操作的各种行为、状态和结果用数字的形式来记录和存储&#xff0c;据此再对数据…

华为OD机试 - 模拟数据序列化传输(Java JS Python C C++)

题目描述 模拟一套简化的序列化传输方式,请实现下面的数据编码与解码过程 编码前数据格式为 [位置,类型,值],多个数据的时候用逗号分隔,位置仅支持数字,不考虑重复等场景;类型仅支持:Integer / String / Compose(Compose的数据类型表示该存储的数据也需要编码)编码后数…

VSCode安装C语言编译环境

目录 一、在vscode下载C/C扩展 二、配置gcc环境 1.访问网站&#xff1a;https://sourceforge.net/projects/mingw-w64/files/ 2.解压并复制bin目录 三、配置gcc环境 四、在cmd检查是否配置成功 五、vscode配置gcc环境 六、在vscode运行C文件 运行.c代码 七、在vscode运…

JVM-2

目录 1.虚拟机类加载机制 2.JVM常见回收算法 2.1标记清除算法 2.2标记整理算法 2.3标记复制算法 3.分代垃圾回收机制 新生代收集 第一次垃圾回收 第二次垃圾回收 第N此垃圾回收 老年代收集 4.补充 Stop The World Java的对象结构 1.虚拟机类加载机制 双亲委派模式…

理解STM32的低功耗模式

低功耗模式简介 TM32的低功耗模式是特别设计来减少微控制器在不活跃状态下的能耗。这些模式允许STM32在保持核心功能的同时尽可能减少电力消耗&#xff0c;适合用在电池供电或需长期运行的场景。理解各种低功耗模式如何节能&#xff0c;主要包括以下几个方面&#xff1a; 关闭…

DenseNet笔记

&#x1f4d2;from ©实现pytorch实现DenseNet&#xff08;CNN经典网络模型详解&#xff09; - 知乎 (zhihu.com) 是什么之 DenseBlock 读图&#xff1a; x0是inputH1的输入是x0 (input)H2的输入是x0和x1 (x1是H1的输出) Summary&#xff1a; 传统卷积网&#xff0c;网…

C语言——函数指针——函数指针数组 (详解)

函数指针数组 函数指针数组的作用 函数指针数组是一个数组&#xff0c;其中的每个元素都是一个函数指针。函数指针是指向函数的指针变量&#xff0c;可以用来调用相应的函数。函数指针数组的作用是可以根据需要动态地选择并调用不同的函数。 函数指针数组的使用场景有很多&…

C++ Standard Library简介

目录 ​编辑 引言&#xff1a; Boost C Libraries&#xff1a;截至本文编写时间最新版本 1.84.0 STL源码分析&#xff1a; C STL源码分析&#xff08;一&#xff09;&#xff1a;STL体系结构和一些基础知识 libc&#xff1a; 概述 libc 入门 现状 平台和编译…

BetterDisplay for mac V2.2.5 强大的mac显示器管理开源工具

BetterDisplay是Mac OS 一个很棒的工具&#xff01; 它允许您将显示器转换为完全可扩展的屏幕 管理显示器配置覆盖 允许亮度和颜色控制 提供 XDR/HDR 亮度升级&#xff08;Apple Silicon 和 Intel Mac 上兼容的 XDR 或 HDR 显示器的额外亮度超过 100% - 多种方法可用&#x…

【Linux】文件系统扩展——软硬链接

目录 对文件建立软硬链接 软链接 硬链接 对文件建立软硬链接 对 log 文件建立软链接&#xff1a; ln -s log log.soft.link 对 test 文件建立硬链接&#xff1a; ln test test.hard.link log.soft.link 和 test.hard.link 在 Linux 中都只是文件名&#xff0c;为了方便…

springboot整合shiro的实战教程(三)

文章目录 授权实现0.页面资源授权2.代码授权方式3.方法调用授权4.授权数据持久化5. 创建dao方法6.实现service接口7.修改自定义realm 授权实现 0.页面资源授权 <%taglib prefix"shiro" uri"http://shiro.apache.org/tags" %><shiro:hasAnyRoles…

Java对接(BSC)币安链 | BNB与BEP20的开发实践(二)BNB转账、BEP20转账、链上交易监控

上一节我们主要是环境搭建&#xff0c;主要是为了能够快速得去开发&#xff0c;有些地方只是简单的介绍&#xff0c;比如ETH 、web3j等等这些。 这一节我们来用代码来实现BNB转账、BEP20转账、链上交易监控 话不多说&#xff0c;我们直接用代码实现吧 1. BNB转账 /*** BNB转…

后端八股笔记-----mysql

Mysql 聚合查询————可以用增加一个实例表解决 多表查询————可以优化sql语句进行查询 &#x1f446; 显示Using index condition的话 说明是有优化的空间 &#x1f446;唯一索引指的是类似主键这种数据内容唯一的属性 &#x1f446;图中的最后一个sql的索引…

Math类 --Java学习笔记

Math 代表数学&#xff0c;是一个工具类&#xff0c;里面提供的都是对数据进行操作的一些静态方法 Math提供的常用方法

Kafka的分区机制

Kafka的分区机制是其核心功能之一&#xff0c;旨在提高可扩展性和并行处理能力。下面概述了Kafka分区的基本概念和工作原理&#xff1a; Kafka分区基本概念 分区&#xff08;Partition&#xff09;&#xff1a;Kafka中的主题&#xff08;Topic&#xff09;可以细分为多个分区…

OD_2024_C卷_200分_7、5G网络建设【JAVA】【最小生成树】

package odjava;import java.util.Scanner;public class 七_5G网络建设 {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt(); // 基站数量&#xff08;节点数&#xff09;int m sc.nextInt(); // 基站对数量&#xff08;边数&…

【Docker】在 Ubuntu20.04 上配置 Docker 开发环境

【Docker】在 Ubuntu20.04 上配置 Docker 开发环境 1 安装 Docker2 加入 Docker 用户组 1 安装 Docker 参考文档: Link 卸载以避免冲突 for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done设…

linux中新添加一块硬盘之后,系统起不来

问题&#xff1a; 在添加磁盘之后&#xff0c;重新开机时&#xff0c;却发现无法进入系统中 原因&#xff1a; 是因为添加了新的磁盘之后&#xff0c;系统将空硬盘当作系统盘启动&#xff0c;所以无法启动系统 解决方案&#xff1a; 进入到bios&#xff0c;将系统盘的优先级…

【大厂AI课学习笔记NO.71】AI算力芯片GPU/TPU等

AI算力芯片的发展历程 人工智能&#xff08;AI&#xff09;算力芯片的发展历程紧密地跟随着AI技术的发展脚步。从早期的基于传统中央处理器&#xff08;CPU&#xff09;的计算&#xff0c;到图形处理器&#xff08;GPU&#xff09;的广泛应用&#xff0c;再到专门为AI设计的处…