问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

HarmonyOS开发:组件属性动态设置的三种方法

创作时间:
作者:
@小白创作中心

HarmonyOS开发:组件属性动态设置的三种方法

引用
CSDN
1.
https://blog.csdn.net/ming_147/article/details/139477013

在HarmonyOS应用开发中,组件属性的动态设置是一个常见的需求。本文将介绍三种实现方式,帮助开发者根据具体场景选择合适的技术方案。

前言

在很多场景下,针对组件的属性,我们都需要动态来选择是否使用,比如组件的显示和隐藏,背景颜色改变的设置,高度的改变设置,字体大小的改变设置等。在非声明式UI语言里,我们可以使用if/else语法来控制组件的属性设置。那么,在声明式语言ArkUI中,我们如何动态控制某些属性的设置呢?

针对动态属性的设置,目前总结了三种使用方式,可以满足不同的业务场景。

方式一:三元运算符,直接动态设置属性

比如我们要根据一个状态的判断,来动态的显示和隐藏某一个组件,可以使用以下代码:

.visibility(this.isVisibility ? Visibility.Visible : Visibility.None)

这种方式适用于大多数属性的动态设置,只需要控制相关变量即可。

方式二:动态属性attributeModifier控制

方式一的局限在于,无论状态如何变化,属性本身都需要被设置。如果需要真正控制某个属性是否被设置,可以使用attributeModifier属性。

例如,当需要根据状态动态设置高度、侧滑属性或边框属性时,可以采用这种方式。具体步骤如下:

  1. 声明需要的动态属性,自定义类实现AttributeModifier接口:
class MyTextModifier implements AttributeModifier<TextAttribute> {  
  applyNormalAttribute(instance: TextAttribute): void {    
    if (this.textHeight != undefined) {      
      instance.height(this.textHeight)
    }
  }
}
  1. 使用自定义的AttributeModifier:
modifier: MyTextModifier = new MyTextModifier()
.attributeModifier(this.modifier)

方式三:多组件形式

声明式UI支持条件渲染,可以通过创建多个组件实例来实现属性的动态设置。但这种方式会导致代码冗余,因此不推荐用于属性的动态控制,更适合用于组件的整体切换场景。

总结

  • 如果是属性值的动态切换,使用方式一便可满足需求。
  • 如果是属性的动态设置,使用方式二即可。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号