说明: 从 API version 9 开始,该装饰器支持在 ArkTS 卡片中使用。
装饰器使用说明
语法
@Extend(UIComponentName) function functionName { ... }
使用规则
● 和 @Styles 不同,@Extend 仅支持定义在全局,不支持在组件内部定义。
● 和 @Styles 不同,@Extend 支持封装指定的组件的私有属性和私有事件,以及预定义相同组件的 @Extend 的方法。
// @Extend(Text)可以支持Text的私有属性fontColor
@Extend(Text) function fancy () {
.fontColor(Color.Red)
}
// superFancyText可以调用预定义的fancy
@Extend(Text) function superFancyText(size:number) {
.fontSize(size)
.fancy()
}
● 和 @Styles 不同,@Extend 装饰的方法支持参数,开发者可以在调用时传递参数,调用遵循 TS 方法传值调用。
// xxx.ets
@Extend(Text) function fancy (fontSize: number) {
.fontColor(Color.Red)
.fontSize(fontSize)
}
@Entry
@Component
struct FancyUse {
build() {
Row({ space: 10 }) {
Text('Fancy')
.fancy(16)
Text('Fancy')
.fancy(24)
}
}
}
● @Extend 装饰的方法的参数可以为 function,作为 Event 事件的句柄。
@Extend(Text) function makeMeClick(onClick: () => void) {
.backgroundColor(Color.Blue)
.onClick(onClick)
}
@Entry
@Component
struct FancyUse {
@State label: string = 'Hello World';
onClickHandler() {
this.label = 'Hello ArkUI';
}
build() {
Row({ space: 10 }) {
Text(`${this.label}`)
.makeMeClick(this.onClickHandler)
}
}
}
● @Extend 的参数可以为状态变量,当状态变量改变时,UI 可以正常的被刷新渲染。
@Extend(Text) function fancy (fontSize: number) {
.fontColor(Color.Red)
.fontSize(fontSize)
}
@Entry
@Component
struct FancyUse {
@State fontSizeValue: number = 20
build() {
Row({ space: 10 }) {
Text('Fancy')
.fancy(this.fontSizeValue)
.onClick(() => {
this.fontSizeValue = 30
})
}
}
}
使用场景
以下示例声明了 3 个 Text 组件,每个 Text 组件均设置了 fontStyle、fontWeight 和 backgroundColor 样式。
@Entry
@Component
struct FancyUse {
@State label: string = 'Hello World'
build() {
Row({ space: 10 }) {
Text(`${this.label}`)
.fontStyle(FontStyle.Italic)
.fontWeight(100)
.backgroundColor(Color.Blue)
Text(`${this.label}`)
.fontStyle(FontStyle.Italic)
.fontWeight(200)
.backgroundColor(Color.Pink)
Text(`${this.label}`)
.fontStyle(FontStyle.Italic)
.fontWeight(300)
.backgroundColor(Color.Orange)
}.margin('20%')
}
}
@Extend 将样式组合复用,示例如下。
@Extend(Text) function fancyText(weightValue: number, color: Color) {
.fontStyle(FontStyle.Italic)
.fontWeight(weightValue)
.backgroundColor(color)
}
通过 @Extend 组合样式后,使得代码更加简洁,增强可读性。
@Entry
@Component
struct FancyUse {
@State label: string = 'Hello World'
build() {
Row({ space: 10 }) {
Text(`${this.label}`)
.fancyText(100, Color.Blue)
Text(`${this.label}`)
.fancyText(200, Color.Pink)
Text(`${this.label}`)
.fancyText(300, Color.Orange)
}.margin('20%')
}
}
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
API
+关注
关注
2文章
2467浏览量
66992 -
鸿蒙
+关注
关注
60文章
3014浏览量
46161 -
OpenHarmony
+关注
关注
33文章
3971浏览量
21341
发布评论请先 登录
相关推荐
热点推荐
无法定位和自定义组件怎么解决?
安装EZ-PD™ SDK3.6 后, PSoC™ Creator 抱怨未知组件。 其中一个例子是
然后,我打开组件更新工具,发现编译器找不到特定版本的组件,见下图。
请提供帮助,以
发表于 11-11 06:04
飞书富文本组件库RichTextVista开源
近日,飞书正式将其自研的富文本组件库 RichTextVista(简称“RTV”)开源,并上线OpenHarmony 三方库中心仓。该组件以领先的性能、流畅的渲染体验与高度的开放性,为鸿蒙生态提供了更高效的富文本解决方案。
关于生命周期中的aboutToAppear和onPageShow的理解和应用
过程、应用进入前台等场景,仅@Entry装饰的自定义组件作为页面时生效。
从两者相同的角度来说,其都是在自定义组件显示后,主动去触发的生命周
发表于 06-30 17:32
HarmonyOS基础组件:Button三种类型的使用
中的Button相较于Android原生来说,功能比较丰富,扩展性高,减少了开发者的代码数量,简化了使用方式。不仅可以自定义圆角还支持三种样式。 常用属性 名称 参数类型 描述 type
贡献 OpenHarmony 库关键配置
、组件等
└─oh-package.json5// HAR的描述文件,定义HAR的基本信息、依赖项等
library/build-profile.json5 建议开启代码混淆
{
\"
发表于 05-28 13:46
层叠布局 (Stack):Stack组件为容器组件,容器内可包含各种子元素
自己的样式定义以及排列。
let MTop:Record = { 'top': 50 }Column(){Stack({ }) { Column(){}.width
发表于 04-30 07:51
KaihongOS操作系统:页面的生命周期介绍
页面的生命周期
在KaihongOS中,学习页面的生命周期前需要先了解自定义组件。
1. 自定义组件(Component)
自定义
发表于 04-25 08:18
KaihongOS操作系统:Button按钮组件介绍
Button
按钮组件,可快速创建不同样式的按钮。
常用接口
Button
Button(options: ButtonOptions)
创建可以包含单个子组件的按钮。
参数:
参数名类型必填
发表于 04-25 07:09
OpenHarmony 定义扩展组件样式:@Extend 装饰器
评论