鸿蒙动态加载组件 HarmonyOS
·
动态加载组件的封装使用
import { BuilderNode, NodeController } from "@kit.ArkUI";
import { OneclickParams } from "../openDialog/PromptActionClassUtils";
export class AddStructNodeUtil extends NodeController {
private rootNode: BuilderNode<[OneclickParams]> | null = null;
private param:OneclickParams|null = null
private wrapBuilder: WrappedBuilder<[OneclickParams]> | null = null
constructor(buildText : WrappedBuilder<[OneclickParams]>,param:OneclickParams) {
super();
this.wrapBuilder = buildText
this.param = param
}
makeNode(uiContext: UIContext): FrameNode | null {
this.rootNode = new BuilderNode(uiContext);
this.rootNode.build(this.wrapBuilder, this.param)
return this.rootNode.getFrameNode();
}
}
看起来挺简单的吧
用的时候如下
private mainMapController: AddStructNodeUtil = new AddStructNodeUtil(wrapBuilder(mainMapLayout), new OneclickParams(
'', (value) => {
}))
熟悉我前面PromptActionClassUtils 文章的,看这调用代码,就是一个布局加一个回调
mainMapLayout 加载的组件,OneclickParams是一个自定义的回调参数
//点击回调的参数
export class OneclickParams {
content: string = ""
sureOnclick:(value:string) =>void= () => {}
constructor(content: string,sureOnclick:(value:string) =>void= () => {}) {
this.content = content;
this.sureOnclick = sureOnclick
}
}
下面的是显示的代码,我第一次看的时候,也觉得这。。。也太简单了吧,会不会有问题,然后尝试了别的方法看看能不能更优雅,,结果还是听人劝,吃饱饭。
if (this.mainMapShow) {
NodeContainer(this.mainMapController)
.width('100%')
.height('100%')
}```
结束了,好像也怎么封装,对了,也就把布局外调了,用的时候不用再自己写一个方法弄进来了,比较敷衍了,这次
更多推荐

所有评论(0)