HarmonyOS 鸿蒙Next 判断条件太多除了ifelse是否有更高效更简洁的方式

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 判断条件太多除了ifelse是否有更高效更简洁的方式 因为当前在build里面只能使用if else方法去处理不同显示效果, 我们有个场景,楼层列表页面,根据后台模版参数,展示不同的楼层组件。我们大概有50-60个模版,现在只能在ForEach里面写很多个if else来展示不同的楼层组件,有没有更高效、更简洁的方式实现呢?

3 回复

文档参考 https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-arkui-node-V5

具体示例代码:

import {
    UIContext
}
from '@ohos.arkui.UIContext';
import {
    NodeController,
    BuilderNode,
    FrameNode
}
from '@ohos.arkui.node';

declare class Params {
    text: string
}

@Builder
function buttonBuilder(params: Params) {
    Flex({
        direction: FlexDirection.Column,
        alignItems: ItemAlign.Center,
        justifyContent: FlexAlign.SpaceEvenly
    }) {
        Text(params.text).fontSize(12) Button(`This is a Button`, {
            type: ButtonType.Normal,
            stateEffect: true
        }).fontSize(12).borderRadius(8).backgroundColor(0x317aff)
    }.height(100).width(200)
}

class MyNodeController extends NodeController {
    private rootNode: BuilderNode<[Params]> |null = null;
    private wrapBuilder: WrappedBuilder<[Params]> = wrapBuilder(buttonBuilder);

    makeNode(uiContext: UIContext) : FrameNode | null {
        if (this.rootNode === null) {
            this.rootNode = new BuilderNode(uiContext);
            this.rootNode.build(this.wrapBuilder, {
                text: "This is a Text"
            })
        }
        return this.rootNode.getFrameNode();
    }
}

@Entry@Component
struct Index {
    private baseNode: MyNodeController = new MyNodeController()

    build() {
        Flex({
            direction: FlexDirection.Column,
            alignItems: ItemAlign.Start,
            justifyContent: FlexAlign.SpaceEvenly
        }) {
            Text("This is a NodeContainer contains a text and a button ").fontSize(9).fontColor(0xCCCCCC) NodeContainer(this.baseNode).borderWidth(1).onClick(() =>{
                console.log("click event");
            })
        }.padding({
            left: 35,
            right: 35,
            top: 35
        }).height(200).width(300)
    }
}

更多关于HarmonyOS 鸿蒙Next 判断条件太多除了ifelse是否有更高效更简洁的方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


visibility控制显示隐藏 条件抽离出去

在HarmonyOS(鸿蒙)开发中,面对大量的判断条件,除了传统的if-else语句,确实存在更高效、更简洁的替代方案。

一种常见的方法是使用switch-case语句。当判断条件是基于一个变量的多个离散值时,switch-case结构通常比一连串的if-else更清晰、更易于维护。然而,需要注意的是,switch-case仅适用于整型(或可隐式转换为整型的枚举类型)变量的判断。

另一种更灵活且强大的方式是使用状态模式策略模式等设计模式。这些设计模式允许你将每个条件分支封装成一个独立的类,并通过对象的多态性来执行相应的逻辑。这种方式不仅提高了代码的可读性,还增强了系统的可扩展性和可维护性。

此外,对于复杂的条件判断,还可以考虑使用查找表决策树等数据结构来优化。这些方法通过将条件与结果直接映射,减少了条件判断的开销,提高了执行效率。

总之,在HarmonyOS开发中,面对大量的判断条件,应根据具体情况选择合适的替代方案以提高代码的效率和简洁性。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部