HarmonyOS 鸿蒙Next应用开发中如何使用动态组件?

发布于 1周前 作者 songsunli 最后一次编辑是 5天前 来自 鸿蒙OS

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

8 回复

大地老师的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

直接在入口组件写foreach或者lazyforeach,具体用法可以查看官方文档,楼上的也是zheng'j'jie
[@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应用开发中,使用动态组件是一项强大的功能,它允许应用在运行时根据需求动态加载和卸载组件,从而提升应用的灵活性和用户体验。以下是使用动态组件的基本步骤:

  1. 定义动态组件:首先,在应用的config.json文件中声明需要动态加载的组件。这包括组件的名称、类型以及加载条件等信息。

  2. 加载动态组件:在应用代码中,通过调用鸿蒙系统提供的API(如Ability.startAbilityForResultFeatureAbility.startAbility等),根据组件的URI或标识来加载动态组件。

  3. 与动态组件交互:加载成功后,可以通过接口或消息机制与动态组件进行交互,传递数据或控制其行为。

  4. 卸载动态组件:当不再需要时,可以调用相应的API来卸载动态组件,释放系统资源。

需要注意的是,动态组件的使用涉及到应用的安全性和稳定性,因此在开发过程中要严格遵守鸿蒙系统的开发规范,确保组件的合法性和兼容性。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。在这里,你可以获得更专业的技术支持和解决方案。

回到顶部