华为仓颉鸿蒙HarmonyOS NEXT仓颉List性能优化LazyForEach(懒加载)

LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当在滚动容器中使用了LazyForEach,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。

求关注

public class DataChangeListener <: RemoteData {
        func onDataReloaded(): Unit
        func onDataAdd(index: Int64): Unit
        func onDataDelete(index: Int64): Unit
        func onDataChange(index: Int64): Unit
        func onDataMove(fromIdx: Int64, toIdx: Int64): Unit
    }

构造函数

init(IDataSource, (T, Int64) -> Unit,(T, Int64) -> String)

public init(dataSource: IDataSource, itemGeneratorFunc!: (T, Int64) -> Unit, keyGeneratorFunc!: (T, Int64) -> String)

构建一个LazyForEach对象。

参数名 参数类型 必填 默认值 描述
dataSource IDataSource - LazyForEach数据源,需要开发者实现相关接口。
itemGeneratorFunc (T, Int64) -> Unit - 子组件生成函数,为数组中的每一个数据项创建一个子组件。lambda函数的第一个泛型参数为数据类型,必须为FFIData的子类;第二个参数为当前列表项的索引值。
keyGeneratorFunc (T, Int64) -> String - 匿名函数,用于键值生成,为给定数组项生成唯一且稳定的键值。当子项在数组中的位置更改时,子项的键值不得更改,当数组中的子项被新项替换时,被替换项的键值和新项的键值必须不同。键值生成器的功能是可选的,但是,为了使开发框架能够更好地识别数组更改,提高性能,建议提供。如将数组反向时,如果没有提供键值生成器,则LazyForEach中的所有节点都将重建。

自定义类型说明

IDataSource

public interface IDataSource {
        f

你可能感兴趣的:(华为,list,数据结构)