小程序

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

2019-02-13  本文已影响10人  程序员三千_

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

上一篇 下一篇

猜你喜欢

热点阅读