一、什么是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
) - 同名的
生命周期函数
具体规则查看官方文档