一、什么是behaviors
behaviors是小程序中,用于实现组件间代码共享的特性,类似于Vue.js中的"mixins"。
stateDiagram-v2
behviors(代码共享) --> 组件A引用
behviors(代码共享) --> 组件B引用
二、behaviors的工作方式
每个behaviors可以包含一组属性、数据、生命周期和方法。组件引用它时,它的属性、数据和方法会被合并到组件中。
每个组件可以引用多个behavior,behavior也可以引用其他的behavior。
三、创建behaviord
调用Behavior(Object object)方法即可创建一个共享的behavior实例对象,供所有的组件使用:
//调用Behavior()方法,创建实例对象
//并使用module.exports将behavior实例对象共享出去
module.exports = Behavior({
//属性节点
properties:{},
//私有数据节点
data:{ username: 'zs'},
//事件处理函数和自定义方法节点
methods:{},
//其他节点...
})
四、导入并使用behavior
在组件中,使用require()方法导入需要的behavior,挂载后即可访问behavior中的数据或方法,实例代码如下:
//1. 使用require()导入需要的自定义的behavior模块
const myBehavior = require("../../behaviors/my-behavior")
Component({
//2. 传入的behavior实例对象,挂载到behaviors数组节点中,即可生效
behaviors:[myBehavior],
//其他节点
})
五、behavior中所有可用的节点
| 可用的节点 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
properties | Object Map | 否 | 同组件的属性 |
data | Object | 否 | 同组件的数据 |
methods | Object | 否 | 同自定义组件的方法 |
behaviors | String Array | 否 | 引入其他的behavior |
| created | Function | 否 | 生命周期函数 |
| attached | Function | 否 | 生命周期函数 |
| ready | Function | 否 | 生命周期函数 |
| moved | Function | 否 | 生命周期函数 |
| detached | Function | 否 | 生命周期函数 |
六、同名字段的覆盖和组合规则*
组件和它引用的behavior中可以包含同名的字段,此时可以参考3种同名的处理规则:
- 同名数据字段(
data) - 同名的属性(
properties)或方法(methods) - 同名的
生命周期函数
具体规则查看官方文档