【Harmony】鸿蒙自定义革新控件 BaseRefresh

[复制链接]
发表于 2025-9-21 00:37:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
先容

一个功能强盛的下拉革新和加载更多组件,支持自定义革新样式、空页面展示、加载更多状态、头布局和尾布局。组件内置了基础的革新动画、状态管理和数据管理,可以轻松实现列表的革新和加载功能。
功能特点



  • 支持下拉革新与上拉加载更多功能
  • 支持分页加载和数据管理
  • 适配List/Grid/ScrollView/WaterFlow四种布局范例,也可以自行实现
  • 内置空布局视图:可传入空布局参数改变空布局样式
  • 支持自定义空布局
  • 支持自定义革新样式和加载更多样式
  • 头部/尾部扩展:支持自定义Header/Footer布局
  • 支持页面数据不满一屏时主动触发上拉加载(必要手动开启)
  • 支持数据分组,支持吸顶/吸尾
  • 支持侧滑功能,包括左侧滑/右侧滑
  • 兼容 V2 状态(该控件是 V2 控件)
链接

源码

示例

效果图

下载安装

在每个har/hsp模块中,通过ohpm工具下载安装库:
  1. ohpm install @hzw/zrefresh
复制代码
利用方法

根本利用示例

  1.   // BaseRefreshController用于更新刷新状态
  2.   @Local controller: BaseRefreshController = new BaseRefreshController()
  3. // BaseRefreshDataSource用于更新数据
  4.   @Local data: BaseRefreshDataSource<String> = new BaseRefreshDataSource<String>()
  5.   aboutToAppear() {
  6.     this.controller.autoRefresh()
  7.   }
  8.   BaseRefresh({
  9.     data: this.data, // 设置数据源
  10.     controller: this.controller, // 设置状态管理
  11.     type: BaseRefreshType.List, // 刷新内容类型,默认为滚动布局
  12.     onRefresh: this.onRefresh, // 设置下拉刷新回调
  13.     onLoadMore: this.onLoadMore, // 设置加载更多回调
  14.     pageSize: 10, // 设置每页加载数量
  15.     refreshModifier: new RefreshModifier(), // 设置Refresh样式
  16.     listModifier: new ListModifier(), // 设置列表样式
  17.     isShowHeader: false, // 设置是否显示头部布局
  18.     isShowFooter: false, // 设置是否显示底部布局
  19.     emptyStatus: {}, // 设置默认空布局样式,如果设置了,则数据为空时会显示默认布局
  20.     customEmptyView: () => { // 设置自定义空布局,如果设置了,则数据为空时会显示自定义布局
  21.       this.Empty()
  22.     },
  23.     customHeadView: () => { // 设置自定义头部布局
  24.       this.Head()
  25.     },
  26.     customFootView: () => { // 设置自定义底部布局
  27.       this.Footer()
  28.     },
  29.     customRefreshHeadView: () => { // 自定义刷新头布局
  30.       this.RefreshHead()
  31.     },
  32.     customRefreshFootView: () => { // 自定义底部加载更多布局
  33.       this.RefreshFoot()
  34.     },
  35.     builder: () => { // 内容
  36.       this.Content()
  37.     },
  38.   })
复制代码
相关方法

触发革新

  1. // this.controller 是 BaseRefreshController 的实例
  2. this.controller.autoRefresh()
复制代码
添加数据

  1. // this.data 是 BaseRefreshDataSource 的实例
  2. this.data.complete(moreData)
复制代码
竣事下拉革新/竣事加载更多

  1. this.controller.finishRefresh()
  2. // 根据数据数量判断是否没有更多数据
  3. const data = ["1", "2"]
  4. this.controller.finishRefresh(data)
  5. // 也可以传入参数来手动设置是否没有更多数据
  6. this.controller.finishRefresh(noMore)
复制代码
竣事下拉革新

  1. this.controller.finishRefresh()
  2. // 根据数据数量判断是否没有更多数据
  3. const data = ["1", "2"]
  4. this.controller.finishRefresh(data)
  5. // 也可以传入参数来手动设置是否没有更多数据
  6. this.controller.finishRefresh(noMore)
复制代码
竣事加载更多

  1. this.controller.finishLoadMore()
  2. // 根据数据数量判断是否没有更多数据
  3. const data = ["1", "2"]
  4. this.controller.finishLoadMore(data)
  5. // 也可以传入参数来手动设置是否没有更多数据
  6. this.controller.finishLoadMore(noMore)
复制代码
空页面表现潜伏,不传默认表现

  1. this.controller.showEmpty(visible)
复制代码
头布局表现潜伏,不传默认表现

  1. this.controller.showHead(visible)
复制代码
底布局表现潜伏,不传默认表现

  1. this.controller.showFoot(visible)
复制代码
底部加载更多布局表现潜伏,不传默认表现

  1. this.controller.showRefreshFooter(visible)
复制代码
重置状态

  1. this.controller.resetStatus()
复制代码
关于 List(列表) 的革新示例,通过BaseRefreshController的实例的complete()方法设置数据

  1. @ComponentV2
  2. export struct RefreshListDemo {
  3.   @Local controller: BaseRefreshController = new BaseRefreshController()
  4.   @Local data: BaseRefreshDataSource<String> = new BaseRefreshDataSource<String>()
  5.   @Local emptyData: boolean = false
  6.   @Local pageSize: number = 15
  7.   aboutToAppear() {
  8.     this.controller.autoRefresh()
  9.   }
  10.   onRefresh = () => {
  11.     this.loadData()
  12.   }
  13.   onLoadMore = () => {
  14.     this.loadData()
  15.   }
  16.   loadData() {
  17.     setTimeout(() => {
  18.       if (this.emptyData) {
  19.         this.data.complete([])
  20.         this.controller.finishState([])
  21.         return
  22.       }
  23.       const arr: number[] = []
  24.       const start = (this.controller.pageIndex - 1) * this.pageSize
  25.       if (this.controller.pageIndex == 2) {
  26.         for (let i = start; i < start + 5; i++) {
  27.           arr.push(i)
  28.         }
  29.       } else {
  30.         for (let i = start; i < start + this.pageSize; i++) {
  31.           arr.push(i)
  32.         }
  33.       }
  34.       const result = Array.from(arr, (item, i) => `Item ${item + 1}`)
  35.       this.data.complete(result)
  36.       this.controller.finishState(result)
  37.       return undefined
  38.     }, 700)
  39.   }
  40.   build() {
  41.     BaseRefresh({
  42.       data: this.data, // 设置数据源
  43.       controller: this.controller, // 设置状态管理
  44.       type: BaseRefreshType.List, // 刷新内容类型,默认为滚动布局,当前设置为列表类型
  45.       onRefresh: this.onRefresh, // 设置下拉刷新回调
  46.       onLoadMore: this.onLoadMore, // 设置加载更多回调
  47.       pageSize: this.pageSize, // 设置每页加载数量
  48.       refreshModifier: new RefreshModifier(), // 设置Refresh样式
  49.       listModifier: new ListModifier(), // 设置列表样式
  50.       builder: () => { // 内容
  51.         this.Content()
  52.       },
  53.     })
  54.   }
  55.   @Builder
  56.   Content() {
  57.     LazyForEach(this.data, (item: string) => {
  58.       ListItem() {
  59.         Stack() {
  60.           Text(`${item}`)
  61.             .borderRadius(10)
  62.             .fontSize(20)
  63.             .fontWeight(FontWeight.Bold)
  64.             .fontColor(Color.White)
  65.             .width('100%')
  66.             .height('100%')
  67.             .textAlign(TextAlign.Center)
  68.             .backgroundColor(Color.Blue)
  69.         }
  70.         .width('100%')
  71.         .height(100)
  72.         .padding({ left: 10, right: 10, top: 10 })
  73.       }
  74.     }, (item: string, index: number) => `${item}${index}`)
  75.   }
  76. }
复制代码
关于 Scroll(滚动) 的革新示例

  1. @ComponentV2
  2. export struct RefreshScrollDemo {
  3.   @Local controller: BaseRefreshController = new BaseRefreshController()
  4.   @Local emptyData: boolean = false
  5.   aboutToAppear() {
  6.     this.controller.autoRefresh()
  7.   }
  8.   onRefresh = () => {
  9.     this.loadData()
  10.   }
  11.   onLoadMore = () => {
  12.     this.loadData()
  13.   }
  14.   loadData() {
  15.     setTimeout(() => {
  16.       this.controller.showEmpty(this.emptyData)
  17.       this.controller.finishRefresh()
  18.       return undefined
  19.     }, 700)
  20.   }
  21.   build() {
  22.     Column() {
  23.       OperateView({
  24.         controller: this.controller,
  25.         emptyData: this.emptyData!!
  26.       })
  27.       BaseRefresh({
  28.         controller: this.controller, // 设置状态管理
  29.         type: BaseRefreshType.ScrollView, // 刷新内容类型,默认为滚动布局,当前设置为滚动类型
  30.         onRefresh: this.onRefresh, // 设置下拉刷新回调
  31.         onLoadMore: this.onLoadMore, // 设置加载更多回调
  32.         refreshModifier: new RefreshModifier(), // 设置Refresh样式
  33.         scrollModifier: new ScrollModifier(), // 设置滚动样式
  34.         isShowHeader: false, // 设置是否显示头部布局
  35.         isShowFooter: false, // 设置是否显示底部布局
  36.         emptyStatus: {}, // 设置默认空布局样式,如果设置了,则数据为空时会显示默认布局
  37.         customEmptyView: () => { // 设置自定义空布局,如果设置了,则数据为空时会显示自定义布局
  38.           this.Empty()
  39.         },
  40.         customHeadView: () => { // 设置自定义头部布局
  41.           this.Head()
  42.         },
  43.         customFootView: () => { // 设置自定义底部布局
  44.           this.Footer()
  45.         },
  46.         customRefreshHeadView: () => { // 自定义刷新头布局
  47.           this.RefreshHead()
  48.         },
  49.         customRefreshFootView: () => { // 自定义底部加载更多布局
  50.           this.RefreshFoot()
  51.         },
  52.         builder: () => { // 内容
  53.           this.Content()
  54.         },
  55.       })
  56.         .width('100%')
  57.         .layoutWeight(1)
  58.     }
  59.     .width('100%')
  60.       .height('100%')
  61.       .backgroundColor(Color.White)
  62.   }
  63.   @Builder
  64.   Content() {
  65.     Stack() {
  66.       Text(`滚动内容`)
  67.         .borderRadius(10)
  68.         .fontSize(20)
  69.         .fontWeight(FontWeight.Bold)
  70.         .fontColor(Color.White)
  71.         .width('100%')
  72.         .height('120%')
  73.         .textAlign(TextAlign.Center)
  74.         .backgroundColor(Color.Orange)
  75.     }
  76.     .padding({ left: 10, right: 10, top: 10 })
  77.   }
  78.   @Builder
  79.   Empty() {
  80.     CustomEmpty()
  81.   }
  82.   @Builder
  83.   Head() {
  84.     CustomHead()
  85.   }
  86.   @Builder
  87.   Footer() {
  88.     CustomFooter()
  89.   }
  90.   @Builder
  91.   RefreshHead() {
  92.     CustomRefreshHead()
  93.   }
  94.   @Builder
  95.   RefreshFoot() {
  96.     CustomRefreshFoot({ showEnd: this.controller.showEnd })
  97.   }
  98. }
复制代码
关于 Grid(网格) 的革新示例

  1. @ComponentV2
  2. export struct RefreshGridDemo {
  3.   @Local controller: BaseRefreshController = new BaseRefreshController()
  4.   @Local data: BaseRefreshDataSource<String> = new BaseRefreshDataSource<String>()
  5.   @Local emptyData: boolean = false
  6.   @Local col: number = 2
  7.   @Local pageSize: number = 15
  8.   @Computed
  9.   get colStr() {
  10.     const arr: string[] = []
  11.     for (let i = 0; i < this.col; i++) {
  12.       arr.push('1fr')
  13.     }
  14.     return arr.join(' ')
  15.   }
  16.   aboutToAppear() {
  17.     this.controller.autoRefresh()
  18.   }
  19.   onRefresh = () => {
  20.     this.loadData()
  21.   }
  22.   onLoadMore = () => {
  23.     this.loadData()
  24.   }
  25.   loadData() {
  26.     setTimeout(() => {
  27.       if (this.emptyData) {
  28.         this.data.complete([])
  29.         this.controller.finishState([])
  30.         return
  31.       }
  32.       const arr: number[] = []
  33.       const start = (this.controller.pageIndex - 1) * this.pageSize
  34.       if (this.controller.pageIndex == 2) {
  35.         for (let i = start; i < start + 5; i++) {
  36.           arr.push(i)
  37.         }
  38.       } else {
  39.         for (let i = start; i < start + this.pageSize; i++) {
  40.           arr.push(i)
  41.         }
  42.       }
  43.       const result = Array.from(arr, (item, i) => `Item ${item + 1}`)
  44.       this.data.complete(result)
  45.       this.controller.finishState(result)
  46.       return undefined
  47.     }, 700)
  48.   }
  49.   build() {
  50.     BaseRefresh({
  51.       data: this.data, // 设置数据源
  52.       controller: this.controller, // 设置状态管理
  53.       type: BaseRefreshType.Grid, // 刷新内容类型,默认为滚动布局,当前设置为网格类型
  54.       onRefresh: this.onRefresh, // 设置下拉刷新回调
  55.       onLoadMore: this.onLoadMore, // 设置加载更多回调
  56.       pageSize: this.pageSize, // 设置每页加载数量
  57.       refreshModifier: new RefreshModifier(), // 设置Refresh样式
  58.       gridModifier: new GridModifier().columnsTemplate(this.colStr), // 设置网格样式
  59.       builder: () => { // 内容
  60.         this.Content()
  61.       },
  62.     })
  63.   }
  64.   @Builder
  65.   Content() {
  66.     LazyForEach(this.data, (item: string) => {
  67.       GridItem() {
  68.         Stack() {
  69.           Text(`${item}`)
  70.             .borderRadius(10)
  71.             .fontSize(20)
  72.             .fontWeight(FontWeight.Bold)
  73.             .fontColor(Color.White)
  74.             .width('100%')
  75.             .height('100%')
  76.             .textAlign(TextAlign.Center)
  77.             .backgroundColor(Color.Blue)
  78.         }
  79.         .width('100%')
  80.           .height(100)
  81.           .padding({ left: 10, right: 10, top: 10 })
  82.       }
  83.     }, (item: string, index: number) => `${item}${index}`)
  84.   }
  85. }
复制代码
关于 WaterFlow(瀑布流) 的革新示例

  1. @ComponentV2
  2. export struct RefreshWaterFlowDemo {
  3.   @Local controller: BaseRefreshController = new BaseRefreshController()
  4.   @Local data: BaseRefreshDataSource<String> = new BaseRefreshDataSource<String>()
  5.   @Local emptyData: boolean = false
  6.   @Local col: number = 2
  7.   @Local pageSize: number = 15
  8.   @Computed
  9.   get colStr() {
  10.     const arr: string[] = []
  11.     for (let i = 0; i < this.col; i++) {
  12.       arr.push('1fr')
  13.     }
  14.     return arr.join(' ')
  15.   }
  16.   aboutToAppear() {
  17.     this.controller.autoRefresh()
  18.   }
  19.   onRefresh = () => {
  20.     this.loadData()
  21.   }
  22.   onLoadMore = () => {
  23.     this.loadData()
  24.   }
  25.   loadData() {
  26.     setTimeout(() => {
  27.       if (this.emptyData) {
  28.         this.data.complete([])
  29.         this.controller.finishState([])
  30.         return
  31.       }
  32.       const arr: number[] = []
  33.       const start = (this.controller.pageIndex - 1) * this.pageSize
  34.       if (this.controller.pageIndex == 2) {
  35.         for (let i = start; i < start + 5; i++) {
  36.           arr.push(i)
  37.         }
  38.       } else {
  39.         for (let i = start; i < start + this.pageSize; i++) {
  40.           arr.push(i)
  41.         }
  42.       }
  43.       const result = Array.from(arr, (item, i) => `Item ${item + 1}`)
  44.       this.data.complete(result)
  45.       this.controller.finishState(result)
  46.       return undefined
  47.     }, 700)
  48.   }
  49.   build() {
  50.     BaseRefresh({
  51.       data: this.data, // 设置数据源
  52.       controller: this.controller, // 设置状态管理
  53.       type: BaseRefreshType.WaterFlow, // 刷新内容类型,默认为滚动布局,当前设置为瀑布流类型
  54.       onRefresh: this.onRefresh, // 设置下拉刷新回调
  55.       onLoadMore: this.onLoadMore, // 设置加载更多回调
  56.       pageSize: this.pageSize, // 设置每页加载数量
  57.       refreshModifier: new RefreshModifier(), // 设置Refresh样式
  58.       scrollModifier: new ScrollModifier(), // 设置滚动样式,因为瀑布流类型是 Scroll嵌套WaterFlow来实现头尾布局,所以用到了Scroll控件
  59.       waterFlowModifier: new WaterFlowModifier().columnsTemplate(this.colStr), // 设置瀑布流样式
  60.       builder: () => { // 内容
  61.         this.Content()
  62.       },
  63.     })
  64.   }
  65.   @Builder
  66.   Content() {
  67.     LazyForEach(this.data, (item: string, index: number) => {
  68.       FlowItem() {
  69.         Stack() {
  70.           Text(`${item}`)
  71.             .borderRadius(10)
  72.             .fontSize(20)
  73.             .fontWeight(FontWeight.Bold)
  74.             .fontColor(Color.White)
  75.             .width('100%')
  76.             .height('100%')
  77.             .textAlign(TextAlign.Center)
  78.             .backgroundColor(Color.Blue)
  79.         }
  80.         .height(Math.random() * 100 + 100)
  81.           .padding({ left: 10, right: 10, top: 10 })
  82.       }
  83.       .width('100%')
  84.     }, (item: string, index: number) => `${item}${index}`)
  85.   }
  86. }
复制代码
关于 No(不指定滚动布局范例,自行实现) 的革新示例

  1. @ComponentV2
  2. export struct RefreshNoDemo {
  3.   @Local controller: BaseRefreshController = new BaseRefreshController()
  4.   @Local emptyData: boolean = false
  5.   aboutToAppear() {
  6.     this.controller.autoRefresh()
  7.   }
  8.   onRefresh = () => {
  9.     this.loadData()
  10.   }
  11.   onLoadMore = () => {
  12.     this.loadData()
  13.   }
  14.   loadData() {
  15.     setTimeout(() => {
  16.       this.controller.showEmpty(this.emptyData)
  17.       this.controller.finishRefresh()
  18.       return undefined
  19.     }, 700)
  20.   }
  21.   build() {
  22.     BaseRefresh({
  23.       controller: this.controller, // 设置状态管理
  24.       type: BaseRefreshType.No, // 刷新内容类型,无滚动类型(不内置滚动控件,交由使用者自定义)
  25.       onRefresh: this.onRefresh, // 设置下拉刷新回调
  26.       onLoadMore: this.onLoadMore, // 设置加载更多回调
  27.       refreshModifier: new RefreshModifier(), // 设置Refresh样式
  28.       scrollModifier: new ScrollModifier(), // 设置滚动样式
  29.       builder: () => { // 内容
  30.         this.Content()
  31.       },
  32.     })
  33.   }
  34.   @Builder
  35.   Content() {
  36.     Scroll() {
  37.       Stack() {
  38.         Text(`滚动内容`)
  39.           .borderRadius(10)
  40.           .fontSize(20)
  41.           .fontWeight(FontWeight.Bold)
  42.           .fontColor(Color.White)
  43.           .width('100%')
  44.           .height('120%')
  45.           .textAlign(TextAlign.Center)
  46.           .backgroundColor(Color.Orange)
  47.       }
  48.       .padding({ left: 10, right: 10, top: 10 })
  49.     }
  50.   }
  51. }
复制代码
参数分析

BaseRefresh 组件参数

参数名范例默认值必填分析dataBaseAbsRefreshDataSource | undefinedundefined是数据源,需继续BaseAbsRefreshDataSourcetypeBaseRefreshTypeScrollView否内容范例:List/ScrollView/Grid/WaterFlow/NoenableRefreshbooleantrue否是否启用下拉革新enableLoadMorebooleantrue否是否启用加载更多pageSizenumber20否每页加载数量controllerBaseRefreshControllernew BaseRefreshController()是状态控制器scrollerScrollernew Scroller()是滚动控制器实例refreshModifierRefreshModifiernew RefreshModifier()否革新控件样式设置listModifierListModifiernew ListModifier()否列表样式设置scrollModifierScrollModifiernew ScrollModifier()否滚动视图样式设置gridModifierGridModifiernew GridModifier()否网格布局样式设置waterFlowModifierWaterFlowModifiernew WaterFlowModifier()否瀑布流样式设置listItemModifierListItemModifiernew ListItemModifier()否列表项样式设置(需设置listBuilder收效)onRefresh() => Promise<Object[]|undefined>async () => {}是下拉革新回调函数onLoadMore() => Promise<Object[]|undefined>async () => {}是加载更多回调函数builder() => voidthis.doBuilder是内容构建函数listBuilder(data: Object, index: number) => voidundefined否列表项构建函数(设置后builder属性失效)swipeLeftBuilder(data: Object, index: number) => voidundefined否列表项左滑布局(需设置listBuilder收效)swipeRightBuilder(data: Object, index: number) => voidundefined否列表项右滑布局(需设置listBuilder收效)isShowHeaderbooleanfalse否是否表现头部布局isShowFooterbooleanfalse否是否表现底部布局isShowRefreshFooterbooleantrue否是否表现加载更多布局groupDataBaseAbsRefreshDataSource | undefinedundefined是分组数据源(需设置listBuilder收效)listItemGroupModifierListItemGroupModifiernew ListItemGroupModifier()否列表项分组样式设置(需设置listBuilder和groupData收效)listItemGroupHeadBuilder(data: BaseRefreshGroupItem, index: number) => voidundefined否列表分组头部构建函数(需设置listBuilder和groupData收效)listItemGroupFootBuilder(data: BaseRefreshGroupItem, index: number) => voidundefined否列表分组底部构建函数(需设置listBuilder和groupData收效)groupStyleListItemGroupStyle | undefinedundefined否列表分组样式设置(需设置listBuilder和groupData收效)isGroupTopStickybooleantrue否列表分组是否顶部吸顶(需设置listBuilder和groupData收效)isGroupFootStickybooleanfalse否列表分组是否底部吸顶(需设置listBuilder和groupData收效)isAutoLoadMoreWhileNoFullbooleanfalse否页面数据不满一屏时是否主动触发上拉加载customEmptyView() => voidundefined否自定义空布局组件customHeadView() => voidundefined否自定义头部布局customFootView() => voidundefined否自定义底部布局customRefreshHeadView() => voidundefined否自定义革新头部组件customRefreshFootView() => voidundefined否自定义加载底部组件emptyStatusBaseRefreshEmptyStatus | undefinedundefined否空布局状态设置gridLayoutOptionsGridLayoutOptions | undefinedundefined否网格布局设置选项BaseRefreshController 类方法

方法名参数返回值分析autoRefresh-void主动触发革新finishStatenoMore: (Object | undefined | null)[] | undefined | null | booleanvoid根据当前状态竣事革新/加载finishRefreshnoMore?: (Object | undefined | null)[] | undefined | null | booleanvoid竣事革新状态finishLoadMorenoMore?: (Object | undefined | null)[] | undefined | null | booleanvoid竣事加载更多状态showEmptyvisible?: boolean控制空页面表现showHeadvisible?: booleanvoid控制头部布局表现状态showFootvisible?: booleanvoid控制底部布局表现状态showRefreshFootervisible?: booleanvoid控制加载更多布局表现状态resetStatus-void重置全部状态到初始值(包罗refreshing/loadMore/showEnd等)onScrollIndexstart: number, end: numbervoid列表/网格滚动索引变革回调,当滚动到底部时触发加载onScrollEdgeedge: Edgevoid滚动视图到达边沿回调(Edge.Bottom时触发加载)onScrollFrameBeginoffset: numberBaseRefreshOffsetInterface滚动偏移量变革回调,用于判断滑动方向BaseRefreshDataSource 类方法

方法名参数返回值分析add1stItemdata: Tvoid在列表头部插入元素addLastItemdata: Tvoid在列表尾部追加元素addItemindex: number, data: Tvoid在指定位置插入元素delete1stItem-void删除第一个元素deleteItemByIndexindex: numbervoid删除指定索引元素deleteItemdata: Tvoid删除指定元素setItemindex: number, data: Tvoid更新指定位置元素clear-void清空全部数据notifyDataReload-void关照数据重载notifyDataAddindex: numbervoid关照数据添加变乱notifyDataChangeindex: numbervoid关照数据变更变乱notifyDataDeleteindex: numbervoid关照数据删除变乱completedata: T[] | undefinedvoid完成加载利用(根据革新状态决定更换或追加数据)作者其他库



  • 鸿蒙数据库工具:https://gitee.com/HW-Commons/ZDbUtil
接洽我们

接待各人提交issue、PR(可以同一收集标题,方便更多人查阅,会第一时间复兴处理处罚) ,或进群交换(+v: _hhbin)。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表