behaviors
是用于组件间代码共享的特性,类似于一些编程语言中的“mixins”或“traits”。
每个 behavior
可以包含一组属性、数据、生命周期函数和方法,组件引用它时,它的属性、数据和方法会被合并到组件中,生命周期函数也会在对应时机被调用。每个组件可以引用多个 behavior
。 behavior
也可以引用其他 behavior
。
behavior
需要使用 Behavior()
构造器定义。
代码示例:
// my-behavior.js
module.exports = Behavior({
behaviors: [],
properties: {
myBehaviorProperty: {
type: String
}
},
data: {
myBehaviorData: {}
},
attached() {},
methods: {
myBehaviorMethod() {}
}
})
组件引用时,在 behaviors
定义段中将它们逐个列出即可。
代码示例:
在开发者工具中预览效果
// my-component.js
const myBehavior = require('my-behavior')
Component({
behaviors: [myBehavior],
properties: {
myProperty: {
type: String
}
},
data: {
myData: {}
},
attached() {},
methods: {
myMethod() {}
}
})
在上例中, my-component
组件定义中加入了 my-behavior
,而 my-behavior
中包含有 myBehaviorProperty
属性、 myBehaviorData
数据字段、 myBehaviorMethod
方法和一个 attached
生命周期函数。这将使得 my-component
中最终包含 myBehaviorProperty
、 myProperty
两个属性, myBehaviorData
、 myData
两个数据字段,和 myBehaviorMethod
、 myMethod
两个方法。当组件触发 attached
生命周期时,会依次触发 my-behavior
中的 attached
生命周期函数和 my-component
中的 attached
生命周期函数。
组件和它引用的 behavior
中可以包含同名的字段,对这些字段的处理方法如下:
behavior
中的属性或方法,如果引用了多个 behavior
,在定义段中靠后 behavior
中的属性或方法会覆盖靠前的属性或方法;behavior
被一个组件多次引用,它定义的生命周期函数只会被执行一次。