鸿蒙API14开发【Repeat】ArkTS组件_鸿蒙开发 组件repeat idatasource
接口
Repeat: (arr: Array)
Repeat组件non-virtualScroll场景(不开启virtualScroll开关)中,Repeat基于数据源进行循环渲染,需要与容器组件配合使用,且接口返回的组件应当是允许包含在Repeat父容器组件中的子组件。Repeat循环渲染和ForEach相比有两个区别,一是优化了部分更新场景下的渲染性能,二是组件生成函数的索引index由框架侧来维护。
Repeat组件virtualScroll场景中,Repeat将从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件,必须与滚动类容器组件配合使用。当在滚动类容器组件中使用了Repeat,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会缓存组件,并在下一次迭代中使用。
卡片能力: 从API version 12开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
Array
类型的数组,由开发者决定数据类型。示例:
// arr是Array类型的数组,以arr为数据源创建Repeat组件Repeat(this.arr)ts
事件
卡片能力: 从API version 12开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
each
each(itemGenerator: (repeatItem: RepeatItem) => void): RepeatAttribute
组件生成函数。template和templateId匹配不上的数据项走默认生成函数each。
说明
each
属性必须有,否则运行时会报错。itemGenerator
的参数为RepeatItem
,该参数将item
和index
结合到了一起,请勿将RepeatItem
参数拆开使用。
卡片能力: 从API version 12开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
示例:
// arr是Array类型的数组,为每个数据创建一个Text组件Repeat(this.arr) .each((obj: RepeatItem) => { Text(obj.item) })ts
key
key(keyGenerator: (item: T, index: number) => string): RepeatAttribute
键值生成函数。
卡片能力: 从API version 12开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
arr
数组中的数据项。arr
数组中的数据项索引。示例:
// arr是Array类型的数组,为每个数据创建一个Text组件// 并将字符串的值作为其键值Repeat(this.arr) .each((obj: RepeatItem) => { Text(obj.item) }) .key((obj: string) => obj)ts
virtualScroll
virtualScroll(virtualScrollOptions?: VirtualScrollOptions): RepeatAttribute
Repeat
开启虚拟滚动。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
示例:
// arr是Array类型的数组,为每个数据创建一个Text组件// 在List容器组件中使用Repeat,并打开virtualScrollList() { Repeat(this.arr) .each((obj: RepeatItem) => { ListItem() { Text(obj.item) }}) .virtualScroll()}ts
template
template(type: string, itemBuilder: RepeatItemBuilder, templateOptions?: TemplateOptions): RepeatAttribute
复用模板。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
示例:
// arr是Array类型的数组// 在List容器组件中使用Repeat,并打开virtualScroll// 创建模板temp,该模板为数据创建Text组件List() { Repeat(this.arr) .each((obj: RepeatItem) => {}) .virtualScroll() .template(\'temp\', (obj: RepeatItem) => { ListItem() { Text(obj.item) }})}ts
templateId
templateId(typedFunc: TemplateTypedFunc): RepeatAttribute
为当前数据项分配templateId。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
示例:
// arr是Array类型的数组// 在List容器组件中使用Repeat,并打开virtualScroll// 创建模板temp,该模板为数据创建Text组件// 所有数据项都使用temp模板List() { Repeat(this.arr) .each((obj: RepeatItem) => {}) .virtualScroll() .template(\'temp\', (obj: RepeatItem) => { ListItem() { Text(obj.item) }}) .templateId((item: string, index: number) => { return \'temp\' })}ts
RepeatItem
卡片能力: 从API version 12开始,该接口支持在ArkTS卡片中使用。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
VirtualScrollOptions对象说明
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
示例:
// arr是Array类型的数组,在List容器组件中使用Repeat,并打开virtualScroll// 将加载的数据项总数设为数据源的长度List() { Repeat(this.arr) .each((obj: RepeatItem) => { ListItem() { Text(obj.item) }}) .virtualScroll( { totalCount: this.arr.length } )}ts
RepeatItemBuilder
type RepeatItemBuilder = (repeatItem: RepeatItem) => void
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
TemplateOptions对象说明
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
示例:
// arr是Array类型的数组,在List容器组件中使用Repeat,并打开virtualScroll// 创建模板temp,该模板为数据创建Text组件,所有数据项都使用temp模板// 将temp模板的最大缓存节点数量设为2List() { Repeat(this.arr) .each((obj: RepeatItem) => {}) .virtualScroll() .template(\'temp\', (obj: RepeatItem) => { ListItem() { Text(obj.item) }}, { cachedCount: 2 }) .templateId((item: string, index: number) => { return \'temp\' })}ts
TemplateTypedFunc
type TemplateTypedFunc = (item : T, index : number) => string
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
更多鸿蒙开发内容:
尽在↓