HarmonyOS 现有组件扩展如何实现

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

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

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

class Base {
  method1() {
    console.log(‘method1 from Base’);
  }
}

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

class Child extends Base {
  method1() {
    console.log(‘method1 from Child’);
  }
  method2() {
    console.log(‘method2 from Child’);
  }
}

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

@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;
    }
  }
}

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

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

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

分享
微博
QQ
微信
回复
2025-01-09 18:33:26
相关问题
HarmonyOS 如何实现有符号的数组
456浏览 • 0回复 待解决
PopWindow的效果实现有哪些?
884浏览 • 1回复 待解决
Binder链接池实现有哪些方法?
952浏览 • 1回复 待解决
Scroller的fling实现有什么好的方案
1063浏览 • 1回复 待解决
HarmonyOS扩展文本
332浏览 • 1回复 待解决
HarmonyOS 无障碍扩展安装
648浏览 • 1回复 待解决
HarmonyOS string、number扩展方法
237浏览 • 0回复 待解决
HarmonyOS 扩展表达式
216浏览 • 1回复 待解决
HarmonyOS 无障碍扩展findElement
679浏览 • 1回复 待解决
HarmonyOS 怎么调用现有的so库
381浏览 • 1回复 待解决
HarmonyOS cmake语法是否兼容现有的cmake
169浏览 • 1回复 待解决