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