| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 21 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |
mutableBuilder:实现全局@Builder动态更新
介绍
在组件开发中,如果需要在运行时动态切换不同的全局@Builder函数来更新UI显示效果,使用wrapBuilder无法实现动态替换。此时,可以使用mutableBuilder实现全局@Builder的动态更新。
mutableBuilder是wrapBuilder的增强版本,支持在运行时动态替换全局@Builder,同时支持与@Monitor配合监听Builder变化,以及与MutableBinding配合实现双向数据绑定。
在阅读本文档前,建议阅读:@Builder、wrapBuilder。
在@ComponentV2装饰的自定义组件中,开发者仅可以使用状态变量装饰器,包括@Local、@Param、@Once@Event、@Provider、@Consumer等。
@ComponentV2装饰的自定义组件暂不支持LocalStorage等现有自定义组件的能力。
无法同时使用@ComponentV2与@Component装饰同一个struct结构。
@ComponentV2支持一个可选的boolean类型参数freezeWhenInactive,来实现组件冻结功能。
说明 从API version 22开始使用。
示例文档
mutableBuilder:实现全局@Builder动态更新。
效果预览
| 首页 | 动态切换Builder页面 | 上下文菜单页面 | 数据绑定页面 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
使用说明
- 安装编译生成的hap包,并打开应用;
- 首页面会出现示例界面;
- 点击"MutableBuilderDynamic"可查看动态切换Builder示例;
- 点击"MutableBuilderContextMenu"可查看上下文菜单中使用mutableBuilder示例;
- 点击"MutableBuilderBinding"可查看MutableBinding双向绑定示例。
工程目录
mutableBuilder
│
src
├── main
│ ├── ets
│ │ ├── entryability
│ │ │ └── EntryAbility.ets
│ │ ├── entrybackupability
│ │ │ └── EntryBackupAbility.ets
│ │ └── pages
│ │ ├── Index.ets
│ │ ├── MutableBuilderDynamic.ets //示例1:动态切换全局@Builder
│ │ ├── MutableBuilderContextMenu.ets //示例2:上下文菜单中使用mutableBuilder
│ │ └── MutableBuilderBinding.ets //示例3:MutableBinding双向数据绑定
│ ├── module.json5
│ └── resources
│ ├── base
│ │ ├── element
│ │ │ ├── color.json
│ │ │ ├── float.json
│ │ │ └── string.json
│ │ ├── media
│ │ │ ├── background.png
│ │ │ ├── foreground.png
│ │ │ ├── layered_image.json
│ │ │ └── startIcon.png
│ │ └── profile
│ │ ├── backup_config.json
│ │ └── main_pages.json
│ ├── dark
│ │ └── element
│ │ └── color.json
│ └── rawfile
├── mock
│ └── mock-config.json5
├── ohosTest
│ ├── ets
│ │ └── test
│ │ ├── Ability.test.ets
│ │ ├── Index.test.ets
│ │ └── List.test.ets
│ └── module.json5
└── test
├── List.test.ets
└── LocalUnit.test.ets
具体实现
- 动态切换Builder:使用mutableBuilder包装全局@Builder函数,返回MutableBuilder对象赋值给@Local状态变量,通过点击按钮动态替换不同的@Builder(如textBuilder与buttonBuilder切换),实现UI内容的动态更新。
- 上下文菜单使用:将mutableBuilder包装的@Builder对象赋值给组件属性,在bindMenu等API中使用builder属性弹出菜单,实现全局@Builder在组件API场景下的灵活复用。
- MutableBinding双向绑定:结合UIUtils.makeBinding创建MutableBinding对象,将双向绑定的数据传递给mutableBuilder包装的@Builder,在@Builder内部修改绑定值可同步更新组件状态变量;同时配合@Monitor监听mutableBuilder变量变化,感知Builder动态替换事件。
相关权限
不涉及
依赖
不涉及
约束和限制
-
本示例支持标准系统上运行,支持设备:RK3568等;
-
本示例为Stage模型,支持API22版本full-SDK,版本号:6.0.0.47,镜像版本号:OpenHarmony_6.0.0 Release。
-
本示例需要使用DevEco Studio 6.0.0 Release (Build Version: 6.0.0.858, built on September 24, 2025)及以上版本才可编译运行。
下载
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo code/DocsSample/ArkUISample/mutableBuilder > .git/info/sparse-checkout
git remote add origin https://gitcode.com/openharmony/applications_app_samples.git
git pull origin master



