首页 > 编程语言 >微信小程序--生命周期

微信小程序--生命周期

时间:2024-03-06 13:33:06浏览次数:28  
标签:function 生命周期 -- 微信 attached 组件 页面

目录

1、什么是生命周期

2、分类

  • 小程序应用的生命周期
  • 页面的生命周期
  • 组件的生命周期

3、三种生命周期的详解

4、页面与组件

4.1条件渲染

4.2父子组件的影响

 


 

 

1、概念

生命周期:生命周期(Life Cycle)是指一个对象从创建 -> 运行 -> 销毁的整个阶段,强调的是一个时间段。

生命周期函数:是由小程序框架提供的内置函数,会伴随着生命周期,自动按次序执行。

注意:生命周期强调的是时间段,生命周期函数强调的是时间点

2、分类

  • 小程序应用的生命周期
  • 页面的生命周期
  • 组件的生命周期

3、详解

3.1小程序应用生命周期

从小程序启动->运行->销毁的过程

app.js

App({
  //小程序初始化完成时,执行此函数,全局只触发一次。可以做一些初始化的工作。
  onLaunch: function(options) { },
  
  //小程序启动,或从后台进入前台显示时触发。
  onShow : function(options) { },
  
  //小程序从前台进入后台时触发。
  onHide : function() { }
})

补充:

 

3.2页面生命周期

小程序的页面生命周期函数需要在页面的 .js 文件中进行声明。

Page({
  //监听页面加载,一个页面只调用1次
  onl oad : function(options) { },
  //监听页面显示
  onShow : function() { },
  //监听页面初次渲染完成,一个页面只调用1次
  onRcady : function() { },
  //监听页面隐藏
  onHide: function() { },
  监听页面卸载,一个页面只调用1次
  onUnload: function() { }
})

3.3组件生命周期

组件的生命周期,指的是组件自身的一些函数,这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。

Component({
  lifetimes: {
    attached: function() {
      // 在组件实例进入页面节点树时执行
    },
    detached: function() {
      // 在组件实例被从页面节点树移除时执行
    },
  },
  // 以下是旧式的定义方式,可以保持对 <2.2.3 版本基础库的兼容
  attached: function() {
    // 在组件实例进入页面节点树时执行
  },
  detached: function() {
    // 在组件实例被从页面节点树移除时执行
  },
  // ...
})

组件生命周期函数补充:

组件所在页面的生命周期

Component({
  pageLifetimes: {
    show: function() {
      // 页面被展示
    },
    hide: function() {
      // 页面被隐藏
    },
    resize: function(size) {
      // 页面尺寸变化
    }
  }
})

3.4页面与组件的执行过程

    • 打开小程序:(App)onLaunch --> (App)onShow --> (Pages)onLoad --> (Pages)onShow --> (pages)onRead
    • 进入下一个页面:(Pages)onHide --> (Next)onLoad --> (Next)onShow --> (Next)onReady
    • 返回上一个页面:(curr)onUnload --> (pre)onShow
    • 离开小程序:(App)onHide
    • 再次进入:小程序未销毁 --> (App)onShow(执行上面的顺序),小程序被销毁,(App)onLaunch重新开始执行.

作者:别救了这猴子废了
链接:https://juejin.cn/post/7151402790823133215
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

4、页面与组件

4.1条件渲染

组件可以通过 wx:if 和 hidden 来控制渲染的,这两种方式对生命周期的触发也有影响。

例:定义一个组件log

Component({
  lifetimes: {
    attached() {
      console.log('log attached')
    }
  }
})

使用 wx:if

<view wx:if="{{false}}"> <log /> </view>   //不会触发 attached,因此控制台没有输出。

使用 hidden

<view hidden="{{true}}"> <log /> </view>    //控制台会输出 log attached

比较:

以上两种渲染的差异在于,hidden 会正常渲染 DOM,而 wx:if 则不会渲染 DOM。

如果组件的父元素使用 hidden 进行隐藏,那么此时 createdattachedready 生命周期均会正常触发。如果在这些生命周期里获取子元素的尺寸,则所有值均返回 0。

4.2父子组件的触发顺序

    • 父组件 created
    • 子组件 created
    • 父组件 attached
    • 子组件 attached
    • 父组件 linked(触发多次,次数 = 子组件数量)
    • 子组件 linked
    • 父组件 ready
    • 子组件 ready

 

<t-cell-group>
    <t-cell title="cell1" />
    <t-cell title="cell2" />
    <t-cell title="cell3" />
 </t-cell-group>

子组件 cell 的 setData 触发次数为:1 + 2 + 3 = 6 次。

但其实开发者的预期应该是 1 次,所以 updateLastChid 应该放在父组件的 ready 方法里才符合预期

 

标签:function,生命周期,--,微信,attached,组件,页面
From: https://www.cnblogs.com/meiyanstar/p/18056066

相关文章

  • 机器学习基础-线性回归,逻辑回归,SVM
    回归给定数据,回归就是用一个方程尽可能地拟合数据点的分布;线性回归假设数据中\(y\)与\(x\)呈线性关系;给定,线性回归就是要找一条线/面,并且让这条直线尽可能地拟合数据点的分布;二元线性回归:$\hat{y}=ax_1+bx_2+c$去拟合数据解法:最小二乘;$loss=\sum{(y_i-\hat{y_i}......
  • 3121008942
    1.软件工程第一次作业这个作业属于哪个课程2021软件工程这个作业要求在哪里<作业要求的链接>这个作业的目标<写上具体方面>其他参考文献.....目录1.软件工程第一次作业2.评估当前的自己2.1个人信息2.2当前值2.2.1专业水平个人爱好的作品3.展望未来3.1阅......
  • 106. 从中序与后序遍历序列构造二叉树 c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/structTreeNode*buidl_tree(int*inorder,inthead1,intn1,int*postorder,inthead2,intn2){if(n1<......
  • 数据元素/域增强
    数据元素修改文本描述  域增加选择范围   然后维护值即可......
  • 654. 最大二叉树c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/intmaxindex(int*nums,inthead,inttail){if(head==tail)returnhead;intmax=head;for(int......
  • 爬虫程序的实现
    0.学习爬虫的入门看的第一个视频就是手把手的讲解怎么写爬虫程序,对小白非常的友好,强烈推荐。(写新的程序就是照葫芦画瓢)【Python+爬虫】爆肝两个月!拜托三连了!这绝对是全B站最用心(没有之一)的Python+爬虫公开课程,从入门到(不)入狱!_哔哩哔哩_bilibili1.插件所有的爬虫程序都要用到......
  • PbRL | Preference Transformer:反正感觉 transformer 很强大
    论文题目:PreferenceTransformer:ModelingHumanPreferencesusingTransformersforRL,ICLR2023,5668,poster。pdf:https://arxiv.org/pdf/2303.00957.pdfhtml:https://ar5iv.labs.arxiv.org/html/2303.00957openreview:https://openreview.net/forum?id=Peot1SFDX0项......
  • 微服务架构,客户端如何捕捉服务端的异常?
    在微服务架构或者分布式系统中,客户端如何捕捉服务端的异常?这里说的客户端指调用方、服务端指被调用方,它们通常运行在不同的进程之中,这些进程可能运行在同一台服务器,也可能运行在不同的服务器,甚至不同的数据机房;其使用的技术栈可能相同,也可能存在很大的差异。为什么在Java、C#......
  • MarkDown基础使用方法
    MarkDown语法推荐文本编辑器:Typora文件后缀:xxx.md标题:+标题名字(一级标题)+标题名字(二级标题)类推字体:Hell,World!Hell,World!Hell,World!Hell,World!引用箭头符号空格分割线三个-三个*占全屏图片超链接点击跳转到***列表ABC有序列表1.......
  • 3.4格力
    3.4格力赣州自我介绍讲解一下项目问题小程序是否上线?答:小程序是本地部署。还未上线,但是会上线的。Vue的了解多少?答:对Vue了解的不多,大多数会用的程度。Vue的生命周期和声明是怎么样的?讲解一下答:这个不是很清楚,对Vue了解的不多,可能使用多一点。Java的......