为了更好定制自定义组件的功能,可以使用自定义组件扩展机制。
扩展后的效果
为了更好地理解扩展后的效果,先举一个例子:
// behavior.js
export default Behavior({
definitionFilter(defFields) {
defFields.data.from = 'behavior';
},
});
// component.js
import myBehavior from 'behavior.js';
Component({
data: {
from: 'component',
},
behaviors: [myBehavior],
ready() {
console.log(this.data.from); // 此处会发现输出 behavior 而不是 component
},
});
通过例子可以发现,自定义组件的扩展其实就是提供了修改自定义组件定义段的能力。上述例子就是修改了自定义组件中的 data
定义段里的内容。
使用扩展
Behavior()
构造器提供了新的定义段 definitionFilter
,用于支持自定义组件扩展。definitionFilter
是一个函数,在被调用时会注入两个参数。第一个参数是使用该 behavior
的 component/behavior
的定义对象,第二个参数是该 behavior
所使用的 behavior
的 definitionFilter
函数列表。
以下举个例子来说明:
// behavior3.js
export default Behavior({