小程序里的自定义组件(六):behaviors:组件间代码复用

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

为了解决组件间的代码复用,小程序给我们提供behaviors。先看下官方文档关于behaviors的定义:


现在我们新建一个组件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 被一个组件多次引用,它定义的生命周期函数只会被执行一次。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容