behaviors:组件间代码复用

behaviors:组件间代码复用

问题:现在我们有三个组件:组件a,组件b,组件c,这三个组件里有一些相同的properties、data、methods甚至生命周期相同的处理,比如在生命周期attached里打印某些日志。

为了解决组件间的代码复用,小程序给我们提供behaviors。先看下官方文档关于behaviors的定义:
behaviors 是用于组件间代码共享的特性,类似于一些编程语言中的“mixins”或“traits”。
每个 behavior 可以包含一组属性、数据、生命周期函数和方法。组件引用它时,它的属性、数据和方法会被合并到组件中,生命周期函数也会在对应时机被调用。 每个组件可以引用多个 behavior ,behavior 也可以引用其他 behavior 。
详细的参数含义和使用请参考 Behavior 参考文档。

现在我们新建一个组件test和一个behaviors我们叫做test-beh。

在这里插入图片描述
在这里插入图片描述

我们在test-beh里定义了一个content,类型为string,并设置他的默认值为22,并用export导出它。
在这里插入图片描述

behaviors如上图,然后我们在组件的js代码里,引入这个behaviors,这里说明下 为什么behaviors是一个数组,因为我们每个组件可以引用多个 behavior,例如 behaviors: [testBeh,a,b,c…],

在这里插入图片描述

如上图,然后我们在组件的wxml里绑定content这个变量,并且在页面上引用这个组件。

在这里插入图片描述

如上图,我们打印出了content的值是22.

   **之前我们讲过,一个组件是可以引用多个behavior,所以存在同名字段覆盖的问题,

所以我们看下官方给出的字段的覆盖和组合规则:
组件和它引用的 behavior 中可以包含同名的字段,对这些字段的处理方法如下:
1、如果有同名的属性或方法,组件本身的属性或方法会覆盖 behavior 中的属性或方法,如果引用了多个 behavior ,在定义段中靠后 behavior中的属性或方法会覆盖靠前的属性或方法;
2、如果有同名的数据字段,如果数据是对象类型,会进行对象合并,如果是非对象类型则会进行相互覆盖;
3、生命周期函数不会相互覆盖,而是在对应触发时机被逐个调用。如果同一个 behavior 被一个组件多次引用,它定义的生命周期函数只会被执行一次。**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值