如何使用代码方式向容器组件中动态创建组件?(HarmonyOS 鸿蒙Next)
如何使用代码方式向容器组件中动态创建组件?(HarmonyOS 鸿蒙Next) 在同一个窗体(非Web),比如通过Button点击事件,往一个页面的RelativeContainer组件中添加一个自定义的Image组件。
动态创建组件大概有三种方式
-
if/else条件渲染 参考 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-rendering-control-ifelse-V5?catalogVersion=V5
-
ForEach循环渲染 参考 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-rendering-control-foreach-V5
-
通过NodeContainer挂载节点 参考 https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-arkui-nodecontroller-V5?catalogVersion=V5
也可以参考如下demo:
@Entry
@Component
struct BuilderDemo {
@State isShow: boolean = false;
@State count:number[] = [1];
@Builder
showTextBuilder() {
Image($rawfile('background.png'))
.width(50)
.height(50)
}
build() {
RelativeContainer() {
Column() {
if(this.isShow) {
this.showTextBuilder()
}
ForEach(this.count,(item:number)=>{
this.showTextBuilder()
})
}
Button('添加组件 if')
.onClick(()=>{
this.isShow = true;
})
.margin({left:70})
Button('添加组件 foreach')
.onClick(()=>{
this.count.push(1);
})
.margin({left:70,top:50})
}
.height('100%')
.width('100%')
}
}
更多关于如何使用代码方式向容器组件中动态创建组件?(HarmonyOS 鸿蒙Next)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙Next)中,可以通过代码方式动态向容器组件中添加组件。以下是一个简单的示例,展示如何使用DirectionalLayout
作为容器,并动态添加Text
组件。
import { DirectionalLayout, Text } from '@ohos.arkui.directional';
// 创建容器组件
let container = new DirectionalLayout();
// 设置容器的布局属性
container.width = '100%';
container.height = '100%';
container.orientation = DirectionalLayout.VERTICAL;
// 动态创建Text组件
let text1 = new Text();
text1.text = '动态创建的Text组件1';
text1.fontSize = 20;
text1.textColor = '#000000';
let text2 = new Text();
text2.text = '动态创建的Text组件2';
text2.fontSize = 20;
text2.textColor = '#000000';
// 将Text组件添加到容器中
container.addComponent(text1);
container.addComponent(text2);
// 将容器添加到页面中
page.appendChild(container);
在这个示例中,首先创建了一个DirectionalLayout
作为容器,然后动态创建了两个Text
组件,并将它们添加到容器中。最后,将容器添加到页面中。通过这种方式,可以在运行时根据需要动态地向容器中添加组件。