HarmonyOS 鸿蒙Next应用开发中如何使用动态组件?
HarmonyOS 鸿蒙Next应用开发中如何使用动态组件?
比如自己写了3个自定义组件,分别是Bird、Cat、Dog,并放入了数组数据中,如何在ForEach遍历数组时动态渲染出这些个组件?有无类似Vue的Component组件?
比如这样:
// 伪代码
import * as componentsMap from ‘./components.ets’; // 该文件可随意添加或删除多个组件,因此是动态的
const list = Object.values(componentsMap); // 组件列表
build() {
// 动态渲染出components.ets文件中所有的组件,而不需关心文件里有无增删新的组件 (或者换一种场景,该组件列表是从物料库中动态查询出来的,你无法提前知道有哪些组件)
ForEach(List, (item) => {
Component({compClaz: item})
})
}
更多关于HarmonyOS 鸿蒙Next应用开发中如何使用动态组件?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
大地老师的HarmonyOS Next正式版 纯血鸿蒙课程里有详细讲解啊:https://www.bilibili.com/video/BV1fw2ZYSEk2
更多关于HarmonyOS 鸿蒙Next应用开发中如何使用动态组件?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
楼主的意思是想类似于vue的component 绑定is的写法吧
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
[@Component](/user/Component)
struct Bird {
build() {
Column() {
Text("My Bird")
}
}
}
@Component
struct Cat {
build() {
Column() {
Text(“My Cat”)
}
}
}
@Component
struct Dog {
build() {
Column() {
Text(“My Dog”)
}
}
}
@Entry
@Component
struct Page046 {
@State arrData : string[] = [“Bird”,“Cat”,“Dog”,“Bird”]
build() {
Column() {
ForEach(this.arrData,(item:string,index:number)=>{
if(item == ‘Bird’){
Bird()
}else if(item == ‘Cat’){
Cat()
}else if(item == ‘Dog’){
Dog()
}
})
}
.width(‘100%’)
.height(‘100%’)
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
这样相当于hard code了,你需要知道列表所有的组件是哪些,列表有增删组件也需要修改if条件。极端情况,即如果组件列表来自于某个目录的动态组件列表,或是从远端下载的组件文件列表,事先并不知道组件类型,怎么改if呢?
是没有vue那么灵活,我也没找到怎么动态注入组件,API 9的时候还可以用any动态传一些内容,到了API 10以后就各种限制 ,组件本身不支持继承…… 目前官方提供的窗口算是一种动态的了,只要传组件路径就行。 例:contentRouter: ‘pages/Page02’, 但这只是针对弹窗,和你这边业务可能不符。 参考:https://developer.huawei.com/consumer/cn/blog/topic/03152984411920042
在HarmonyOS鸿蒙Next应用开发中,使用动态组件是一项强大的功能,它允许应用在运行时根据需求动态加载和卸载组件,从而提升应用的灵活性和用户体验。以下是使用动态组件的基本步骤:
-
定义动态组件:首先,在应用的
config.json
文件中声明需要动态加载的组件。这包括组件的名称、类型以及加载条件等信息。 -
加载动态组件:在应用代码中,通过调用鸿蒙系统提供的API(如
Ability.startAbilityForResult
或FeatureAbility.startAbility
等),根据组件的URI或标识来加载动态组件。 -
与动态组件交互:加载成功后,可以通过接口或消息机制与动态组件进行交互,传递数据或控制其行为。
-
卸载动态组件:当不再需要时,可以调用相应的API来卸载动态组件,释放系统资源。
需要注意的是,动态组件的使用涉及到应用的安全性和稳定性,因此在开发过程中要严格遵守鸿蒙系统的开发规范,确保组件的合法性和兼容性。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。在这里,你可以获得更专业的技术支持和解决方案。