登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
鸿蒙应用开发从入门到实战(八):ArkTS自定义组件语法 ...
鸿蒙应用开发从入门到实战(八):ArkTS自定义组件语法
[ 复制链接 ]
计海龄
2025-10-1 17:52:58
**大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容、欢迎关注!**
复制代码
除去系统预置的组件外,ArkTS 还支持自定义组件。使用自定义组件,可使代码的结构更加清晰,并且能提高代码的复用性。
一、自定义组件语法
自定义组件的语法如下图所示
各部分语法说明如下:
struct关键字
struct是
ArkTS
新增的用于自定义组件或者自定义弹窗的关键字。其声明的数据结构和
TS
中的类十分相似,可包含属性和方法。
build方法
build()方法用于声明自定义组件的UI结构。
组件属性
组件属性可用作自定义组件的参数,使得自定义组件更为通用。
@Compnent装饰器
@Component装饰器用于装饰struct关键字声明的数据结构。struct被@Component装饰后才具备组件化的能力。
注: 装饰器是Typescript中的一种特殊语法,常用于装饰类、方法、属性,用于修改或扩展其原有的行为。
在学完自定义组件的语法之后,我们会发现前文案例中的每个页面实际上都是一个自定义组件。但是和自定义组件的语法相比,前边的每个案例还会多出一个@Entry装饰器,那@Entry的作用又是啥呢?
在鸿蒙应用中,每个页面都是由一些列组件组合而成的,并且这些组件都是逐层嵌套的,因此这些组件最终形成了一个组件树的结构,如下图所示
我们前边所编写的每个页面就相当于是组件树的根节点,而@Entry装饰器的作用就是标识该组件为组件树的根节点,也就是一个页面的入口组件。
二、自定义组件案例
现在需要对前文的开/关灯的案例做出如下改造,由于两个按钮的结构十分相似,所以可考虑自定义一个按钮组件,然后进行复用。
自定义组件可以放在文件内,也可以单独成一个文件
文件内:
@Entry
@Component
// 自定义组件
struct CustomCom {
@State isOpen: boolean = false
build() {
Column({space:50}) {
if (this.isOpen) {
Image('pages/imgs/light-on.png')
.height(300)
.width(300)
}else {
Image('pages/imgs/light-off.png')
.height(300)
.width(300)
}
Row({space:50}){
CustomButton({text:'Open',color:Color.Red}) //自定义组件传参
.onClick(()=>{
this.isOpen=false
})
Button('Open')
.onClick(()=>{
this.isOpen=true
})
}
}
.width('100%')
.width('100%')
.justifyContent(FlexAlign.Center)
}
}
@Component
struct CustomButton {
text:String ='Close' //接收参数
color:Color =Color.Blue
build() {
Button(this.text.toString())
.backgroundColor(this.color)
}
}
复制代码
单独文件:
新建ArkTS文件,将自定义组件内容拷贝
@Component
export struct CustomButton {
text:String ='Close' //接收参数
color:Color =Color.Blue
build() {
Button(this.text.toString())
.backgroundColor(this.color)
}
}
复制代码
在要使用的文件中引入:
import { CustomButton } from './CumtomButton'
复制代码
光标置于报错处,alt+回车,选择导入类即可
《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容,防止迷路,欢迎关注!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
鸿蒙
应用开发
入门
实战
ArkTS
相关帖子
鸿蒙应用开发从入门到实战(十九):样式复用案例
接口测试全流程实战:从工具到架构的深度解析
《Go 单元测试从入门到覆盖率提升》(一)
细说敏捷测试-敏捷实战中的探索
《Go 单元测试从入门到覆盖率提升》(二)
Powershell 入门(一)
智能加速边缘AI应用开发!今晚正点原子B站直播间等你不见不散!
多Agent协作入门:AgentGroupChat
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
鸿蒙应用开发从入门到实战(十九):样式复用案例
0
334
赖娅闺
2025-10-11
科技
接口测试全流程实战:从工具到架构的深度解析
0
167
泠邸
2025-10-11
业界
《Go 单元测试从入门到覆盖率提升》(一)
0
194
胰芰
2025-10-11
安全
细说敏捷测试-敏捷实战中的探索
0
393
采序
2025-10-12
业界
《Go 单元测试从入门到覆盖率提升》(二)
0
279
谯梨夏
2025-10-12
安全
Powershell 入门(一)
0
608
均浇
2025-10-12
安全
智能加速边缘AI应用开发!今晚正点原子B站直播间等你不见不散!
0
472
连热
2025-10-13
业界
多Agent协作入门:AgentGroupChat
0
641
鞠彗云
2025-10-13
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
代码
软件
程序
安全
签约作者
程序园优秀签约作者
发帖
计海龄
2025-10-1 17:52:58
关注
0
粉丝关注
21
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994888
dage888
999994
3934307807
993678
4
富账慕
10004
5
刎唇
9993
6
柴古香
9989
7
烯八
9972
8
匝抽
9986
9
筒濂
9977
10
孙淼淼
9986
查看更多