装饰器:

一、组件与页面装饰器

装饰器 说明
@Component 标记一个struct为自定义组件,是UI构建的基本单元
@Entry 标记当前组件为页面的入口点,一个页面有且仅有一个
@Builder 定义自定义构建函数,用于封装可复用的UI片段
@BuilderParam 引用@Builder定义的函数,实现组件插槽/模板化能力
@CustomDialog 标记一个组件为自定义弹窗
@Reusable 标记组件为可复用组件,配合reuseId提升列表性能

二、状态管理装饰器(V1 版本)

装饰器 说明
@State 组件内部状态,变量变化时自动刷新UI
@Prop 父→子单向数据传递,子组件可修改但不影响父组件
@Link 父子双向同步,变量变化会同步回父组件
@Provide 在组件树中提供数据,供后代组件使用
@Consume 接收祖先组件通过@Provide提供的数据
@Observed 装饰类,使其属性变化可被@ObjectLink感知
@ObjectLink 装饰@Observed类的对象,实现深层数据绑定
@Watch 监听状态变量变化,变化时触发自定义回调
@StorageProp 组件变量与AppStorage属性单向绑定
@StorageLink 组件变量与AppStorage属性双向绑定
@LocalStorageProp 组件变量与LocalStorage属性单向绑定
@LocalStorageLink 组件变量与LocalStorage属性双向绑定

三、状态管理装饰器(V2 版本)

装饰器 说明
@ObservedV2 V2版类装饰器,支持属性级观察
@Trace 标记类中的属性为可观察状态(需配合@ObservedV2)
@Local 组件内部状态,类似V1的@State,但性能更优
@Param 父→子单向传递,类似V1的@Prop
@Event 子→父事件回调,用于子组件向父组件传递数据
@Provider 提供数据给后代组件(V2版)
@Consumer 消费祖先组件提供的数据(V2版)
@Monitor 监听状态变量变化,类似V1的@Watch
@Computed 定义计算属性,依赖的状态变化时自动重新计算

四、样式与扩展装饰器

装饰器 说明
@Styles 定义可复用的样式函数,避免重复写属性配置
@Extend 扩展系统组件的样式,可添加自定义属性
@AnimatableExtend 扩展组件的可动画属性,实现自定义动画效果

五、并发与工具装饰器

装饰器 说明
@Concurrent 标记函数可在并发线程中执行
@Sendable 标记类或函数可在线程间安全传递(ArkTS并发模型)

补充说明

  • 装饰器V1vsV2 选择: V2状态管理(@ObservedV2、@Trace等)提供了更精细的属性级观察,性能更优,推荐新项目使用。V1和V2不能混用在同一组件树中。
  • 装饰器使用限制:@Entry、@Component、@Builder等是ArkUI声明式开发的基础,所有自定义组件必须使用@Component装饰。
  • 版本支持:@Reusable、@AnimatableExtend、@Computed等装饰器需要较新版本的API(API 11+),请根据您的项目目标版本确认支持情况。

组件

六、ArkUI 容器组件

容器组件 核心用途
Column / Row 最基础的线性布局容器,分别用于纵向(Column)和横向(Row)排列子组件,支持主轴与交叉轴对齐方式。
Flex 增强版线性布局,支持子组件按比例伸缩(flexGrow / flexShrink),适合导航栏、等分栏等需要动态分配空间的场景。
Stack 层叠布局,子组件可叠加放置,常用于悬浮按钮、图片上叠加文字或图标等效果。
RelativeContainer 相对布局容器,允许子组件通过锚点(如对齐父容器边缘或兄弟组件边缘)进行二维定位,减少嵌套层级。
Grid 网格布局,通过 columnsTemplate / rowsTemplate 定义行列数及比例,支持响应式列数切换,适合商品列表、日历等二维数据展示。
List 高效滚动列表容器,支持长列表的懒加载、分组、粘性头部,适合聊天记录、设置页等场景。可配合 lanes 属性实现多列列表。
WaterFlow 瀑布流布局容器,支持动态切换列数,适合图片流、笔记应用等高度不一致的重复内容展示。
Swiper 轮播容器,支持子组件横向或纵向滑动切换,常应用于首页 Banner、引导页、图片轮播。
Tabs 标签页容器,提供底部/侧边导航切换能力,适合设置分类、资讯频道等需要保持导航可见的页面。
SideBarContainer 侧边栏容器,支持主内容区与侧边栏的分栏布局,在折叠屏或平板场景下可自动切换显隐状态。
Navigation 导航容器,支持单栏/双栏布局模式,结合 SideBarContainer 可实现三分栏(如邮件类应用)。
GridRow / GridCol 栅格布局组件,基于断点机制实现响应式列数调整,常用于图文混排、表单等需要精细控制列宽的场景。
ContainerReader 容器断点组件,基于容器自身尺寸(而非窗口尺寸)提供实时尺寸和断点信息,支持宽度/高度双模式,适合组件级自适应布局。
Scroll 可滚动容器,支持横向或纵向滚动,常作为 List、Grid 等组件的父容器,或用于包裹内容超出屏幕的普通组件。
Refresh 下拉刷新容器,包裹可滚动组件(如 List、Scroll)后提供下拉刷新交互能力。
Counter 计数器容器,用于实现数字增减操作,常用于购物车数量选择等场景。

七、列表与网格容器

在 ArkUI 中,列表与网格相关的容器组件主要用于展示同类或不同类的项目集合,支持滚动、分组、拖拽等交互。以下是核心组件及其用途:

组件 核心用途与特性
List 单列或多列等宽列表容器,适合通讯录、音乐列表等场景。支持项目吸顶(sticky属性)、拖拽排序(含内置动画和边缘自动滚动)、项目横滑(swipeAction属性)以及分割线。可通过 ListItemGroup 实现分组,结合 LazyForEach 或 Repeat 实现懒加载。
Grid 二维网格布局容器,子组件为 GridItem。支持通过 rowsTemplate 和 columnsTemplate 定义行列数量与尺寸占比(如 ‘1fr 1fr 1fr’),也可通过 GridLayoutOptions 实现单个网格跨行跨列(如计算器按键布局)。仅设置行或列模板时,Grid 可滚动。适用于九宫格图片、日历等场景。
WaterFlow 瀑布流布局容器,适合高度不一致的卡片列表(如商品流、图片墙)。支持通过 columnsTemplate 设置列数,通过 WaterFlowSections 实现同一页面内不同列数的分段混合布局。不支持吸顶、拖拽排序或横滑。
ArcList 专为圆形屏幕设备设计的弧形列表,支持列表项在接近屏幕上下两端时自动缩放,适用于智能手表等圆形穿戴设备。
LazyVGridLayout / LazyVWaterFlowLayout 懒加载布局容器,嵌套在可滚动父组件(如 Scroll、List、WaterFlow)内部,按需加载可视区域内的子组件,减少首帧渲染和内存开销。LazyVGridLayout 提供垂直网格布局,LazyVWaterFlowLayout 提供垂直瀑布流布局,可组合使用实现混合布局(如电商首页同时包含网格分类和瀑布流商品)。
Scroll 通用可滚动容器,可包裹任意内容(包括 Grid、WaterFlow 等),支持横向或纵向滚动。常与 Refresh 容器配合实现下拉刷新。
Refresh 下拉刷新容器,包裹可滚动组件(如 List、Scroll)后提供下拉刷新交互。

八、基础组件

HarmonyOS ArkTS 中常用的基础组件用于构建 UI 的基本元素,如文本、输入框、图片、按钮等。

组件 核心用途与特性
Text 显示一段文本的组件,支持设置字体大小、颜色、样式(如加粗、斜体)、对齐方式、行高、文本溢出处理等属性。
Span Text 组件的子组件,用于实现行内文本的混合样式(如部分文字加粗、变色、添加超链接),支持嵌套使用。
TextInput 单行文本输入框组件,支持设置占位符、输入类型(如密码、数字)、最大长度、光标样式、输入事件监听等。
TextArea 多行文本输入框组件,支持设置行数、占位符、最大长度、滚动条、输入事件监听等,适用于长文本输入场景。
Image 图片组件,支持加载本地资源、网络图片、Base64 编码数据等,可设置缩放模式、占位图、失败图、边框圆角等属性。
Button 按钮组件,支持多种样式(如胶囊、圆形、文本按钮)、状态(默认、按下、禁用)、子组件(可包含图标和文字)以及点击事件。
Blank 空白填充组件,在 Row 或 Column 布局中自动填充剩余空间,用于实现弹性间距或占位。
LoadingProgress 加载进度指示器组件,用于展示加载中的状态,支持环形和线性两种样式,可自定义颜色和尺寸。

九、媒体展示组件

媒体展示组件用于在界面中呈现图片、视频等多媒体内容,并提供交互能力。

组件名称 描述 主要用途
Image 用于显示图片的基础组件,支持本地图片、网络图片和资源文件。 图片展示、图标显示、背景图等。
Video 用于播放视频的组件,支持本地视频、网络流媒体(如HLS、DASH),集成了播放控制、全屏切换等功能。 视频播放、直播流展示。
Swiper 滑块视图容器,提供轮播图能力,支持自动播放、循环滑动、导航指示器自定义。 广告轮播、图片浏览、引导页。
ArcSwiper 弧形滑块视图容器,提供弧形排列的轮播效果。 弧形卡片展示、个性化轮播。
UIMediaPreview 第三方多媒体预览组件,支持传入URL数组,以默认或宫格样式展示图片和视频,并支持全屏预览、缩放、下载。 图片/视频预览、多媒体内容浏览。

十十、按钮与选择的组件的组件用于响应用户的点击、切换和选择操作,是构建交互式界面的核心元素。

组件名称 描述
Button 基础按钮组件,用于响应用户的点击操作,支持多种样式和子组件。
ArcButton 弧形按钮组件,专为圆形屏幕(如穿戴设备)设计,提供强调、普通、警告等样式。
Radio 单选框组件,提供一组互斥的选项,用户只能选择其中一项。
Toggle 切换按钮组件,支持勾选框、状态按钮和开关三种样式,用于两种状态之间的切换。
Select 下拉选择菜单组件,提供下拉列表让用户在多个选项间选择,选中后按钮文本自动更新。
Checkbox 多选框组件,允许用户从一组选项中选择多个项。
Slider 滑动条组件,允许用户通过滑动滑块在连续范围内选择一个值。
DatePicker 日期选择器组件,提供日历视图让用户选择年、月、日。
TimePicker 时间选择器组件,提供滚轮视图让用户选择时、分、秒。
Menu 菜单组件,在指定位置弹出菜单项列表,供用户选择执行操作。
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐