【微信小程序】组件的生命周期及自定义组件

简介: 【微信小程序】组件的生命周期及自定义组件

组件的生命周期


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


其中,最重要的生命周期是 created、attached、 detached ,包含一个组件实例生命流程的最主要时间点。


自定义组件的生命周期函数


小程序组件可用的全部生命周期如下表所示:


生命周期函数 参数 描述说明
created 在组件实例刚刚被创建时执行
attached 在组件实例进入页面节点树时执行
ready 在组件在视图层布局完成后执行
moved 在组件实例被移动到节点树另一个位置时执行
detached 在组件实例被从页面节点树移除时执行
error Object Error 每当组件方法抛出错误时执行


执行顺序



从该图中可以看出组件的 ready 与 detached 执行顺序并没有明确的先后关系。


组件常用的生命周期函数


在小程序组件中,最重要的生命周期函数有3个,分别是createdattached.


detached。它们各自的特点。如下︰


  • 组件实例刚被创建好的时候,created生命周期函数会被触发


  • 此时还不能调用setData,通常在这个生命周期函数中,只应该用于给组件的this添加一些自定义的属性字段在组件


  • 完全初始化完毕、进入页面节点树后,attached生命周期函数会被触发


  • 此时, this.data已被初始化完毕。这个生命周期很有用,绝大多数初始化的工作可以在这个时机进行(例如发请求获取初始数据)


  • 在组件离开页面节点树后,detached生命周期函数会被触发


  • 退出一个页面时,会触发页面内每个自定义组件的detached生命周期函数此时适合做一些清理性质的工作


lifetimes节点


在小程序组件中,生命周期函数可以直接定义在Component构造器的第一级参数中,可以在 lifetimes字段内进行声明(这是推荐的方式,其优先级最高)。如下:


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


注意:若不写在lifetime节点中且同时存在lifetime节点,优先执行lifetime节点中的生命周期函数,并覆盖掉节点之外的生命周期函数。


组件所在页面的生命周期函数


有时,自定义组件的行为依赖于页面状态的变化,此时就需要用到组件所在页面的生命周期。


在自定义组件中,组件所在页面的生命周期函数有如下3个,分别是:


生命周期函数 参数 描述
show 组件所在的页面被展示时执行
hide 组件所在的页面被隐藏时执行
resize object Size 组件所在的页面尺寸变化时执行


pageLifetimes节点


组件所在页面的生命周期函数,需要定义在pageLifetimes节点中,如下:


Component({
  pageLifetimes:{
        show(){
           console.log("show!!");
       },
       hide(){
           console.log("hide!!");
       },
       resize(){
           console.log("resize");
       }            
   }        
)}


当页面显示和隐藏时触发



自定义组件


类似vue或者react中的自定义组件。


微信小程序也 允许我们使用自定义组件的方式来构建页面。


当我们在开发小程序页面时,少不了哪些重复或类似的板块,需要我们复制粘贴一份源码进行编写,而组件恰恰解决了这个问题,它能让我们的代码复用率更高。开发更如鱼得水。


创建自定义组件


类似于页面,一个自定义组件由 .json.wxml.wxss.js 4个文件组成。


创建组件


可以在微信开发者工具中快速创建组件的文件结构。如图



创建好之后,便出现四个文件:如图



定义组件


此时我们新建一个页面-demo,在demo.json中可以使用刚才我们创建好的组件。



使用组件


首先让效果更明显,我们在组件的wxml文件中写入一些东西:



之后我们在页面demo.wxml中使用我们的组件:



出现如上效果则说明我们声明的组件已经被使用了


父组件向子组件传递数据


  1. 父组件(页面)向子组件传递数据通过标签属性的方式来传递



  1. 在子组件的.js文件上进行接收



  1. 注意:若父组件给子组件不传值时则使用value中定义的值。


  1. 在SuHeader.wxml中接收数据即可



子组件向父组件传递数据


  1. 给地址绑定鼠标单击事件



  1. 当单击事件被触发。给通过this.triggerEvent绑定父组件的自定义事件并且给父组件传递数据



  1. 父组件的自定义事件



  1. 在demo.js文件中触发父组件的自定义事件,注意与data配置项平级。



  1. 触发单击响应事件



其他定义段与示例方法


定义段 类型 是否必填 描述
properties object Map 组件的对外属性,是属性名到属性设置的映射表
data object 组件的内部数据,和 properties一同用于模板渲染
observers object 组件数据字段监听器,用于监听 properties和data的变化
methods object 组件的方法,包括事件响应函数和任意的自定义方法
created function 组件生命周期函数,在组件实例刚刚被创建时执行,注意此时不能调用setDat
attached function 组件生念周期函数,在组件实例进入页面节点树时执行
ready Function 组件生命周期函数,在组件布局完成后执行
moved Function 组件生命周期函数,在组件实例被移动到节点树另一个位置时执行
detached Function 组件生命周期函数,在组件实例被从页面节点树移除时执行
目录
相关文章
|
11月前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,详细解析了俯卧撑动作的检测规则构建与执行流程,涵盖卧撑和撑卧两个姿态的识别规则,以及如何通过继承`sports.SportBase`类实现运动分析器,适用于小程序开发者。
|
11月前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数01
随着AI技术的发展,AI运动APP如雨后春笋般涌现,如“乐动力”、“天天跳绳”等,推动了云上运动会、线上健身等热潮。本文将指导你从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”,介绍运动识别原理、计量方式及运动分析器基类的使用,帮助你在小程序中实现运动计时和计数功能。下篇将继续探讨运动姿态检测规则的编写。
|
小程序 数据可视化 JavaScript
微信小程序:轻松实现时间轴组件
本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。
564 1
微信小程序:轻松实现时间轴组件
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
263 0
在线课堂+工具组件小程序uniapp移动端源码
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
2165 1
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
657 0
微信小程序:自定义关注公众号组件样式
|
2月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
3月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
174 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
9月前
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
6月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1424 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡

热门文章

最新文章