当前位置: 首页 > news >正文

微信小程序学习(八):behaviors代码复用

小程序的 behaviors 方法是一种代码复用的方式,可以将一些通用的逻辑和方法提取出来,然后在多个组件中复用,从而减少代码冗余,提高代码的可维护性。

如果需要 behavior 复用代码,需要使用 Behavior() 方法,每个 behavior 可以包含一组属性、数据、生命周期函数和方法

组件引用它时,它的属性、数据和方法会被合并到组件中,生命周期函数也会在对应时机被调用。

1、注册 behavior

如果需要注册一个 behavior,需要借助 Behavior() 方法,接受一个 Object 类型的参数

// my-behavior.js
module.exports = Behavior({behaviors: [],properties: {myBehaviorProperty: {type: String}},data: {myBehaviorData: 'my-behavior-data'},created: function () {console.log('[my-behavior] created')},attached: function () {console.log('[my-behavior] attached')},ready: function () {console.log('[my-behavior] ready')},methods: {myBehaviorMethod: function () {console.log('[my-behavior] log by myBehaviorMehtod')},}
})

2、使用 behavior

// my-component.js
const myBehavior = require('my-behavior')Component({behaviors: [myBehavior]// coding...
})

3、同名字段

组件和它引用的 behavior 中可以包含同名的字段,对这些字段的处理方法如下:

  • 如果有同名的属性或方法,采用 “就近原则”,组件会覆盖 behavior 中的同名属性或方法
  • 如果有同名的数据字段且都是对象类型,会进行对象合并,其余情况会 采用 “就近原则” 进行数据覆盖
  • 生命周期函数和 observers 不会相互覆盖,会是在对应触发时机被逐个调用,也就是都会被执行

相关文章:

  • 字节跳动万卡集群网络分析
  • UniAudio 1.5:大型语言模型(LLMs)驱动的音频编解码器
  • 项目部署(前后端)
  • js文件导出功能
  • 2713. 矩阵中严格递增的单元格数
  • Ubuntu20.04环境下Baxter机器人开发环境搭建
  • 深度剖析整型和浮点型数据在内存中的存储(C语言)
  • LabVIEW电源适应能力检测系统
  • JDBC常见的几种连接池使用(C3P0、Druid、HikariCP 、DBCP)
  • 蓝牙解码芯片TD5161A,TWS蓝牙音箱芯片—拓达半导体
  • GPT4v和Gemini-Pro调用对比
  • CachyOS简介
  • springBoot不同module之间互相依赖
  • 前字节员工自爆:我原腾讯一哥们,跳槽去小公司做小领导,就签了竞业,又从小公司离职去了对手公司,结果被发现了,小公司要他赔80万
  • 鸿蒙HarmonyOS实战:渲染控制、路由案例
  • php的引用
  • #Java异常处理
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • CentOS7 安装JDK
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Making An Indicator With Pure CSS
  • opencv python Meanshift 和 Camshift
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • 阿里云应用高可用服务公测发布
  • 力扣(LeetCode)56
  • 如何用vue打造一个移动端音乐播放器
  • 入门级的git使用指北
  • 时间复杂度与空间复杂度分析
  • 实现菜单下拉伸展折叠效果demo
  • 通过npm或yarn自动生成vue组件
  • 项目实战-Api的解决方案
  • 智能合约开发环境搭建及Hello World合约
  • - 转 Ext2.0 form使用实例
  • 06-01 点餐小程序前台界面搭建
  • Nginx实现动静分离
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • # windows 安装 mysql 显示 no packages found 解决方法
  • #define
  • #NOIP 2014#Day.2 T3 解方程
  • #Ubuntu(修改root信息)
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $forceUpdate()函数
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C#)一个最简单的链表类
  • (分类)KNN算法- 参数调优
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (十六)、把镜像推送到私有化 Docker 仓库
  • (十七)Flink 容错机制
  • (循环依赖问题)学习spring的第九天
  • (一一四)第九章编程练习
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)创业家杂志:UCWEB天使第一步