Component
收藏
我的收藏语法
Component(options);
参数说明
options 为 object 类型,属性如下:
属性名 | 类型 | 必填 | 说明 |
properties | object | 否 | 组件的对外属性,是属性名到属性设置的映射表,属性设置中可包含三个字段, type 表示属性类型、value 表示属性初始值、observer 表示属性值被更改时的响应函数 |
data | object | 否 | 组件的内部数据,和 properties 一同用于组件的模版渲染 |
methods | object | 否 | |
behaviors | string | string[] | 否 | |
created | function | 否 | |
attached | function | 否 | 组件生命周期函数,在组件实例进入页面节点树时执行 |
ready | function | 否 | 组件生命周期函数,在组件布局完成后执行 |
moved | function | 否 | 组 件生命周期函数,在组件实例被移动到节点树另一个位置时执行 |
detached | function | 否 | 组件生命周期函数,在组件实例被从页面节点树移除时执行 |
error | function | 否 | 组件错误处理钩子,每当组件方法抛出错误时执行 |
pageLifetimes | object | 否 | |
lifetimes | object | 否 | |
options | object | 否 | 其他选项 |
definitionFilter | function | 否 |
注册的自定义组件实例可以在组件的方法、生命周期函数和属性
observer
中通过 this
访问。组件实例包含一些通用属性和方法。组件实例属性
属性名 | 类型 | 说明 |
is | string | 组件的文件路径 |
id | string | 节点 id |
dataset | string | 节点 dataset |
data | object | 组件数据 |
properties | object | 组件数据 |
properties 属性
属性名 | 数据类型 | 是否必填 | 说明 |
type | 可选值为:String,Boolean,Object,Number,Array,Function,null | 是 | 属性的类型,为 null 时表示不限制类型。基础库 2.46.0 版本后支持 Function |
value | | 否 | 属性初始值 |
observer | function | 否 | 属性值被更改时的响应函数,函数的第一个参数为更改后的新值,第二个参数为更改前的旧值 |
代码示例如下:
Component({ properties: { myProperty1: { type: String, value: "", observer(newVal, oldVal) {}, }, myProperty2: String, // 简略写法 }, });
其中 type 为
Function
类型时支持通过属性传递函数,该能力在基础库 2.46.0 及以后版本支持。使用该特性时有以下注意事项:
- •仅在 app.json 中配置
"component2": true
时才生效;- •无法在 ttml 中调用函数;
- •type 为
Function
时默认值为 null
,当传入的属性类型不合法时会被置为默认值。组件实例方法
方法名 | 参数和类型 | 说明 |
setData | data: object, callback: function | 设置 data,触发无参回调 callback |
hasBehavior | behavior: object | |
triggerEvent | eventName: string, detail: object, options: object | |
selectComponent | selector: string, callback: function | 使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象,此方法为异步方法,返回值会在请求完成后传入 callback |
selectAllComponents | selector: string, callback: function | 使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组,此方法为异步方法,返回值会在请求完成后传入 callback |
createIntersectionObserver | page: object, options: object | |
createSelectorQuery | 无 |
同步修改初始 data
在 app.json 配置项中增加配置
component2: true
后,支持在 created
生命周期中修改自定义组件初始数据。开启后,自定义组件将在 created
生命周期执行完成后开始渲染。从而解决当初始数据依赖计算逻辑时,自定义组件展示数据由默认值到真正数据切换时的闪动问题。 注意:不涉及初始渲染数据的逻辑放到其他生命周期中,避免影响整体渲染耗时。
Bug & Tip
- •Tip:
selectComponent
、selectAllComponents
API 均为异步 API,需要指定回调函数;- •Tip:
selectComponent
、selectAllComponents
在 1.16.2.0
版本后支持同步写法。开发者需要保证在调用 API 时,页面已经渲染完毕,比如页面的 onReady、setData 的回调之后。