当前位置: 首页 > news >正文

HarmonyOS-ArkUI V2装饰器: @Computed装饰器:计算属性

@Computed是用来装饰一个自己写的getter方法的装饰器,它可以让您像用平常的状态变量那样去用这个getter方法。那么getter方法里怎么获取的值,必然涉及到您写的逻辑。这个逻辑可以是很复杂的一种计算方式,经过一系列复杂方式计算完您吐出相应的结果即可。

为了便于理解,我们先从既有的所学的这些装饰器,来看看,当我们有个组件的界面依赖于比较复杂的状态变量计算时,会怎么写,您稍微看一下,估计就能察觉出来那些隐性的限制。

示例代码:

Button("XXXXX").backgroundColor(isRight? Color.Green : Color.Brown)
}

我们看出,其实backgroundColor等一些函数中其实是接收一个计算结果的,因为这是表达式哈,所以从语言上也是接受这种写法的。

但是如果有一个场景使得我们这个值非常复杂呢?那么您会怎么计算,用表达式也没有办法很好的来阐述这个问题。此时我们就要用@Computed装饰器来解决这种问题了。平常使用场景中其实缺少不了这种情况的。出现的挺频繁的。

我们先看一下它是怎么用的,用代码浅浅的体会下,它是怎么来解决我们上述提到的尴尬逻辑的。

@Entry
@ComponentV2
struct ComputedTest {@Local firstName: string = 'Li'@Local lastName: string = 'Hua'age: number = 20@Computedget getFullName(): string{console.log("-------------computed---------------")return this.lastName + ' ' + this.firstName}build() {Column(){Column(){Text(this.lastName + ' ' + this.firstName)Divider()Text(this.getFullName) //这块的入参就可以是一个Computed修饰的get函数。就像用状态变量一样用这个函数Divider()Button('changed lastName').onClick(() => {this.lastName += 'a'; //状态变量的变化,可以重新触发Computed的计算})}}}
}

概述

@Computed装饰器是用来装饰getter方法的。getter方法中涉及到相关状态变量的计算。当相关的状态变量发生变化时会自动触发Computed修饰的函数重新计算。对于比较复杂的计算,Computed会有性能收益。

语法:

// 1 必须是get方法。 2 可以返回

相关文章:

  • 【刷题2025】知识点梳理
  • Notepad++中将文档格式从Windows(CR LF)转换为Unix(LF)
  • ollama修改配置使用多GPU,使用EvalScope进行模型压力测试,查看使用负载均衡前后的性能区别
  • vue复习46~90
  • designware IP如何被FPGA综合
  • 【控制学】控制学分类
  • 儿童后期至青少年早期脑网络隔离增强的发育机制研究
  • 中国反制关税影响分析、可能性分析
  • 基于Python的PC控制Robot 小程序开发历程
  • 虚拟机ubuntu网络如何使用windows物理机的代理
  • 【差分隐私相关概念】瑞丽差分隐私(RDP)引理1
  • 【差分隐私相关概念】瑞丽差分隐私(RDP)-命题1
  • Web前端开发——图像与多媒体文件(上)
  • 计算机视觉——基于 Yolov8 目标检测与 OpenCV 光流实现目标追踪
  • 在ros2上使用opencv显示一张图片
  • 智能指针(内存泄漏)
  • 高德地图自有数据添加图层
  • Ubuntu安装yum遇到Package ‘yum‘ has no installation candidate
  • CSRF(跨站请求伪造)漏洞概述
  • Windows服务器组建与综合服务部署技术方案
  • 万达电影去年净利润亏损约9.4亿元,计划未来三年内新增25块IMAX银幕
  • 五大国货美妆去年业绩分化:珀莱雅百亿营收领跑,上海家化转亏
  • 中国海警位中国黄岩岛领海及周边区域执法巡查
  • 俄伏尔加格勒机场正式更名为斯大林格勒机场
  • 徐徕任上海浦东新区副区长
  • 证据公布!菲律宾6人非法登上铁线礁活动