HarmonyOS 现有组件扩展如何实现

对现在有的组件做扩展如何实现,例如Button、Text、List等组件扩展一个或多个自定义的属性。

HarmonyOS
2025-01-09 16:09:33
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
aquaa

ArkTS没有原型的概念,目前对于拓展的相关述求,只能通过继承基类的方式进行扩展。定义一个基类包含需要扩展的方法。

class Base {
  method1() {
    console.log(‘method1 from Base’);
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

定义一个继承自基类的子类,重写需要扩展的方法,并在子类中添加新的方法。

class Child extends Base {
  method1() {
    console.log(‘method1 from Child’);
  }
  method2() {
    console.log(‘method2 from Child’);
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

组件扩展直接自定义组件即可:

@Component
struct MyText {
  content: string = '';
  fs_type: string = 'medium';

  build() {
    Text(this.content).fontSize(this.getSize())
  }

  getSize() {
    switch (this.fs_type) {
      case 'small':
        return 10;
      case 'medium':
        return 15;
      case 'large':
        return 20;
    }
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

使用时也可添加默认没有的属性:

MyText({ content: 'Test', fs_type: 'large' }).backgroundColor(Color.Yellow)
  .onClick(() => {
    // do something
  })
  • 1.
  • 2.
  • 3.
  • 4.

如果组件前加上export全局可用。

分享
微博
QQ
微信
回复
2025-01-09 18:33:26


相关问题
HarmonyOS 如何实现有符号的数组
826浏览 • 0回复 待解决
Binder链接池实现有哪些方法?
1292浏览 • 1回复 待解决
PopWindow的效果实现有哪些?
1317浏览 • 1回复 待解决
HarmonyOS 视频组件无法扩展其安全区域
1141浏览 • 1回复 待解决
Scroller的fling实现有什么好的方案
1463浏览 • 1回复 待解决
HarmonyOS扩展文本
682浏览 • 1回复 待解决
HarmonyOS 通知扩展消息端代码如何接收
1086浏览 • 1回复 待解决
HarmonyOS 无障碍扩展安装
1050浏览 • 1回复 待解决
HarmonyOS 无障碍扩展findElement
1087浏览 • 1回复 待解决
HarmonyOS 扩展表达式
581浏览 • 1回复 待解决
HarmonyOS string、number扩展方法
645浏览 • 0回复 待解决
HarmonyOS 怎么调用现有的so库
817浏览 • 1回复 待解决