HarmonyOS鸿蒙Next中Scroller控制器的使用

HarmonyOS鸿蒙Next中Scroller控制器的使用 组件A中的一个scroll有一个scroller控制器,如何在组件B中使用该控制器来控制组件A中的滚动

想用@provide@link都不能修饰scroller控制器

5 回复

建议使用BuilderParam装饰器,通过尾随闭包传递一个自定义构建函数给父组件,此时this指向父组件,

@Component
export struct CellGroup {
  @BuilderParam
  default: () => void = this.getDefaultBuilder

  @Builder
  getDefaultBuilder() {
  }

  build() {
   // ...
  }
}
// ...
@Builder
XxxBuilder() {
}

// ...

// 父组件 CellGroup() { // 尾随闭包 this.XxxBuilder() // this指向父组件 }

CellGroup({default: () => { this.ProfileBuilder() // 箭头函数传递,this指向调用者 }})


若通过箭头函数传递该自定义构建函数则`this`指向它的调用者。

更多关于HarmonyOS鸿蒙Next中Scroller控制器的使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


  • @Link 装饰的变量禁止本地初始化,否则编译期会报错。

允许装饰的变量类型:

  • Object、class、string、number、boolean、enum 类型,以及这些类型的数组。
  • 支持 Date 类型。
  • API11 及以上支持 Map、Set 类型。
  • 支持 ArkUI 框架定义的联合类型 Length、ResourceStr、ResourceColor 类型。
  • 类型必须被指定,且和双向绑定状态变量的类型相同。
  • 支持类型的场景请参考 观察变化
  • 不支持 any。
  • API11 及以上支持上述支持类型的联合类型,比如 string | number, string | undefined 或者 ClassA | null,示例见 Link支持联合类型实例

注意:

  • 当使用 undefined 和 null 的时候,建议显式指定类型,遵循 TypeScript 类型校验,比如:@Link a : string | undefined

A, B 组件什么关系? 父子组件?

正常当成属性传递过去就可以了. (有点奇怪@link不能修饰)

组件C调用组件A和B,组件A中scroll可以自己滚动,组件B中执行左右滑动也会引发组件A中scroll的滚动。

在HarmonyOS鸿蒙Next中,Scroller控制器用于实现平滑滚动效果,常用于自定义滚动视图或动画。通过Scroller,可以控制滚动的起始位置、结束位置、持续时间和速度。使用时,首先创建Scroller实例,然后调用startScroll()方法设置滚动参数,最后在onDraw()onLayout()中调用computeScrollOffset()scrollTo()方法实现滚动效果。Scroller提供了灵活的控制方式,适用于复杂的滚动需求。

回到顶部