harmony开发之状态state修饰器的使用

来自官方开发文档,

@State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI会发生对应的渲染改变。

在状态变量相关装饰器中,@State是最基础的,使变量拥有状态属性的装饰器,它也是大部分状态变量的数据源。简单的来说,就是用@State 定义过后的变量,就可以实现,如果后面这个变量的值发生了变化,就会同步更新到apk的软件界面上面。

但是需要注意的是:

@State装饰的变量,与声明式范式中的其他被装饰变量一样,是私有的,只能从组件内部访问,在声明时必须指定其类型和本地初始化。初始化也可选择使用命名参数机制从父组件完成初始化。

也就是说@State声明的变量只能在类似于bulid(){}里面进行使用,如果想要进行重复多次使用可以采用父组件和子组件的继承关系。

另外,这个@State装饰的变量,仅支持,包括Object、class、string、number、boolean、enum类型,以及这些类型的数组。不支持any,不支持简单类型和复杂类型的联合类型,不允许使用undefined和null。建议不要装饰Date类型,应用可能会产生异常行为。不支持Length、ResourceStr、ResourceColor类型,Length、ResourceStr、ResourceColor为简单类型和复杂类型的联合类型。

// for simple type
@State count: number = 0;
// value changing can be observed
this.count = 1;

如参考代码所示,先定义了一个数据类型的变量count,然后在后面的count里面重新赋值为1,然后,那么如果这个count值和界面展示的某个控件相关,那么这个控件上面的数值也是会发生变化。

  • 当状态变量被改变时,查询依赖该状态变量的组件;
  • 执行依赖该状态变量的组件的更新方法,组件更新渲染;
  • 和该状态变量不相关的组件或者UI描述不会发生重新渲染,从而实现页面渲染的按需更新。

下面这段代码是官方的,参考的按键点击,累计增加数值

@Entry
@Component
struct MyComponent {
  @State count: number = 0;

  build() {
    Button(`click times: ${this.count}`)
      .onClick(() => {
        this.count += 1;
      })
  }
}

#CSDN 年度征文|回顾 2023,赢专属铭牌等定制奖品#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/304800.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

更改邮箱发件人

更改邮箱发件人 未更改前发件人显示为发件人的邮箱地址 这里以outlook邮箱为例,进行邮箱发件人的更改 1.点击左上角“文件”选项 2.打开“账户设置”下拉菜单中的“账户设置” 3.选择“电子邮件”,点击该栏下的“更改”选项 4.在弹出页面中修改你…

<软考高项备考>《论文专题 - 56 进度管理(7) 》

10 历年真题解析 10.1 格式 背景500字1-2段 过渡段150字左右1段 一、规划进度管理…【随便写,正常写即可】 二、定义活动…【随便写,正常写即可】 三、排列活动顺序…【随便写,正常写即可】 四、估算活动持续时间…【随便写,正常…

redhat+ oracle 11.2.0.4 RAC 搭建 dataguard

知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系! redhat oracle 11.2.0.4 RAC 搭建 dataguard 1.安装环境 主机名 OS DB SID db_name db_unique_name rac1 Redhat7 11.2.0.4 orcl1 orcl o…

【OpenCV学习笔记05】- 鼠标作为画笔

内容 学习如何用OpenCV处理鼠标事件您将学习以下功能:cv.setMouseCallback() 简单的示例 这里,我们创建一个简单的程序,在图像的任何位置双击在上面画一个圆。 首先我们创建一个鼠标回调函数,该函数在鼠标事件发生时执行。鼠标…

从txt文档里筛选出每行重复数据字符,并保存到新的txt文档

从txt文档里筛选出每行重复数据字符,并保存到新的txt文档 input_file rD:\pythonXangmu\quchong\input_file2.txt #原始文档 #output_file output.txt#重复内容记录文档 output_file rD:\pythonXangmu\quchong\output2.txt#绝对路径,解决报错找不到文…

一篇文章认识微服务中Eureka的原理和服务注册与发现

目录 1、认识Eureka 2、Eureka原理 2.1 和Dubbo架构对比: 2.2 三大角色 3、微服务常见的注册中心 3.1 Zookeeper 3.2 Eureka 3.3 Consul 3.4 Nacos 3.5 区别 1、认识Eureka Netflix 在设计Eureka 时,遵循的就是AP原则。 CAP原则又称CAP定理…

TagTextView 行内标签TextView

效果 效果如下,可以解析xml中配置的drawableStart ,然后将这个drawable显示在一行内。下一个开始。从这个drawable开始。 代码 MaxLengthTextView 是我另外一个自定义view MaxLengthTextView 如果内容超过xml中maxLength属性定义的文字数量时&#x…

揭秘加密货币周期:如何通过顶级代币指标洞察市场变化

作者:stellafootprint.network 加密生态领域如大海般波涛汹涌,如何在这片海域中稳稳航行?关键在于把握市场周期的脉搏。顶级代币的几个核心指标,正是我们窥探市场周期的窗口。 领先的区块链分析平台跟踪的关键代币指标包括&…

什么软件能查出微信聊天记录(3款实用工具盘点!)

微信聊天记录往往记录这很多重要的客户信息,一个不小心可能就会删除,或者员工可以隐藏一些重要的信息,那么此时此刻我们就需要一款,能查处微信聊天记录的工具。 今天就给大家盘点三款: 1、微信电脑端备份 通过在电脑…

MySql01:初识

1.mysql数据库2.配置环境变量3. 列的类型和属性,索引,注释3.1 类型3.2 属性3.3 主键(主键索引)3.4 注释 4.结构化查询语句分类:5.列类型--表列类型设置 1.mysql数据库 数据库: ​ 数据仓库,存储数据,以前我…

基于模块自定义扩展字段的后端逻辑实现(一)

目录 一:背景介绍 二:实现过程 三:字段标准化 四:数据存储 五:数据扩展 六:表的设计 一:背景介绍 最近要做一个系统,里面涉及一个模块是使用拖拉拽的形式配置模块使用的字段表…

快乐学Python,Python基础之代码复用?

上一篇文章中,我们了解了代码的分支结构(if 家族语句)和循环结构(for 循环和 while 循环)。通过了解这些结构,我们已经能够写出稍微复杂一些的代码。但当代码一多,就会遇到一些问题。 上一篇文…

文件上传靶场实战:upload-labs第1-3关

0、环境准备 0.1、安装靶场 由于自己的电脑是win10系统,上传一句话木马被系统自动拦截删除,文件上传的靶场安装在win7虚拟机。把upload-labs安装包复制到老版小皮的C:\phpstudy\PHPTutorial\WWW\目录下解压,然后启用小皮,启用服…

连接两个路由器的有线连法,关键时候可能会发挥不小的作用

路由器网桥连接两个或多个路由器,以扩展网络范围,提供额外的以太网端口和无线接入点。但在开始之前,你必须首先决定如何使用每个路由器。因此,你需要知道你想要实现什么,并清楚地了解你对每台设备的期望。 例如你想扩…

前端入门教程:学完即可单独完成前端项目

目录 目录 1.HTML: 1.1概念 1.2结构 1.3常见的标签使用分类: 2.CSS: 2.1概念 2.2样式实践: 以下的举例都来自于博客: 2.3css选择器: 什么是css选择器: 举例如下: 2.4Demo 3.JavaScript&#…

Go语言为什么建议少用数组,多使用切片?

01 介绍 在 Go 语言中,数组固定长度,切片可变长度;数组和切片都是值传递,因为切片传递的是指针,所以切片也被称为“引用传递”。 读者朋友们在使用 Go 语言开发项目时,或者在阅读 Go 开源项目源码时&…

代码随想录算法训练营第二十二天| 回溯 93.复原IP地址 78.子集 90.子集II

93. 复原 IP 地址 递归参数:index一定是需要的,记录下一层递归分割的起始位置。还需要一个变量pointNum,记录添加逗点的数量。 递归终止条件:明确要求只会分成4段,所以不能用切割线切到最后作为终止条件,…

Speech | 人工智能中语音质量评估方法详解及代码

本文主要讲解人工智能中语音合成,语音转换,语音克隆等生成语音的一些质量评估方法~ 目录 1.语音质量评测方法 主观评价方法 1.1.MOS 1.2.CMOS 1.3.ABX Test 1.4.MUSHRA(MUltiple Stimuli with Hidden Reference and Anchor&#xff0…

Python爬虫-爬取豆瓣Top250电影信息

🎈 博主:一只程序猿子 🎈 博客主页:一只程序猿子 博客主页 🎈 个人介绍:爱好(bushi)编程! 🎈 创作不易:喜欢的话麻烦您点个👍和⭐! 🎈…

003集Class类应用实例—python基础入门实例

面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。 类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 对象则是根…