【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(八)

课程地址: 黑马程序员HarmonyOS4+NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发

(本篇笔记对应课程第 15 节)

P15《14.ArkUI组件-状态管理@state装饰器》

在这里插入图片描述
在这里插入图片描述

回到最初的 Hello World 案例,首先验证 如果删掉 @State装饰器,那么点击文案时再也不会触发视图更新了。

在这里插入图片描述

新建一个页面,修改内容后发现预览器没有更新,查看预览器左上角显示的还是 entry:/pages/index 页面。

在这里插入图片描述

这种情况怎么才能让预览器更新?首先要确保编辑器中active的是你想要预览的页面的代码,然后点击预览器的刷新或者关闭重启按钮,都可以让预览器更新:

在这里插入图片描述

验证用 @State 装饰器修饰的变量必须初始化:

在这里插入图片描述

验证 state变量初始值为 字符串与数字类型:

在这里插入图片描述

验证 state变量初始值为对象类型:

在这里插入图片描述

验证对象嵌套:

在这里插入图片描述

会发现:点击Jack年龄会增长,但点击Rose则不会:

在这里插入图片描述

再次点击一下 Jack,触发视图重新渲染,会发现此时Rose年龄更新了。说明Rose年龄点击时实际上数据已经发生变化了,但就是没有触发视图更新

在这里插入图片描述

验证数组:添加和删除是有效的,但年龄增长无效。说明数组中的元素如果是对象,那么对象属性的更新不会触发视图更新:

在这里插入图片描述

如果给数组中的某个元素重新赋值,可以触发视图更新:

在这里插入图片描述

实践:

老师所谓的“女友列表”真的是三观不正,不忍直视……随便换一个不好么,兴趣列表,工作列表,车子列表……一个人可以拥有的一对多的东西太多了,非要把情侣做成一对多,令人不适!

在这里插入图片描述

完整代码如下:

class Person {name: stringage: numbergf: Personconstructor(name: string, age: number, gf?:Person) {this.name = namethis.age = agethis.gf = gf}
}class Hobby {name: stringfavourite : numberconstructor(name: string, favourite: number) {this.name = namethis.favourite = favourite}
}@Entry
@Component
struct StatePage2 {// @State name: string = 'Jack'// @State age: number = 18// @State p : Person = new Person('Jack', 22, new Person('Rose',20))@State p : Person = new Person('Jack', 22)@State hobbyList: Array<Hobby> = [new Hobby('学习', 1),new Hobby('美食', 2)]@State inx:number = 1build() {Row() {Column() {Text(`${this.p.name} : ${this.p.age}`).fontSize(50).fontWeight(FontWeight.Bold).fontColor('red').onClick(()=>{this.p.age ++})/*Text(`${this.p.gf.name} : ${this.p.gf.age}`).fontSize(50).fontWeight(FontWeight.Bold).fontColor('red').onClick(()=>{this.p.gf.age ++})*/Text('===兴趣列表===').fontSize(30).fontWeight(FontWeight.Bold).fontColor('red')Button('添加').onClick(()=>{this.hobbyList.push(new Hobby(`兴趣${this.inx++}`, 3))})ForEach(this.hobbyList, (item:Hobby,index)=>{Row(){Text(`${item.name} : ${item.favourite}`).onClick(()=>{// item.favourite ++   //点击不会触发视图更新this.hobbyList[index] = {name:item.name, favourite:item.favourite++}  //点击不会触发视图更新})Button('删除').onClick(()=>{this.hobbyList.splice(index,1)})}.width('100%').margin({top:10,bottom:10}).justifyContent(FlexAlign.SpaceAround)})}.width('100%')}.height('100%')}
}@Component
struct StatePage {@State name: string = 'Jack'@State age: number = 18build() {Row() {Column() {Text(`${this.name} : ${this.age}`).fontSize(50).fontWeight(FontWeight.Bold).fontColor('red').onClick(()=>{this.age ++})}.width('100%')}.height('100%')}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pycharm导入所有安装包到requirements.txt文件中

Pycharm导入所有安装包到requirements.txt文件中 在pycharm的终端命令行输入下边的命令,但是必须确保位于项目的根目录下 pip freeze > requirements.txt

物理服务器介绍

物理服务器介绍 概述分类按服务器应用分类按服务器结构分类塔式服务器机架式服务器刀片式服务器机架式服务器与刀片式服务器的对比按处理器个数分类按处理器架构分类 主板概述工作原理物理结构技术参数 CPU概述工作原理指令集相关技术技术参数主流产品 内存概述类型相关技术技术…

C语言-atoi()库函数的模拟实现

文章目录 前言一、atoi()库函数的介绍及使用1.1 atoi()库函数介绍1.2 atoi()库函数使用 二、atoi()库函数的模拟实现2.1 函数设计2.2 函数实现思路2.3 具体实现2.4 测试 总结 前言 本篇文章介绍c语言中库函数atoi()的使用&#xff0c;以及模拟实现库函数。 一、atoi()库函数的…

Threes 特效 炫酷传送门HTML5动画特效

基于Three.js的HTML5 3D动画&#xff0c;这个动画模拟了游戏中的一个炫酷的3D场景&#xff0c;支持360度视角查看&#xff0c;也支持鼠标滚轮进行缩放。画面中主要展现了一个游戏中传送门的效果&#xff0c;同时还有路两边的围栏、灯笼、石头&#xff0c;以及星光闪闪的萤火虫&…

Python机器人动力学和细胞酶常微分方程

&#x1f4dc;常微分方程-用例 &#x1f4dc;Python物理量和化学量数值计算 | &#x1f4dc;Julia和Python蛛网图轨道图庞加莱截面曲面确定性非线性系统 | &#x1f4dc;Python和C数学物理计算分形热力学静电学和波动方程 | &#x1f4dc;C计算资本市场收益及成本分配数学方程…

note-网络是怎样连接的3 集线器、交换机和路由器

助记提要 双绞线抑制噪声的原理集线器的工作交换机的工作过程交换机维护MAC地址表的方式交换机特殊情况下的操作 3种全双工模式的特点自动协商的原理路由器组成路由表内容路由器工作过程路由器和交换机的区别地址转换的基本原理 3章 从网线到网络设备 探索集线器、交换机和路…

IO端口编址

统一编址 特点 独立编址 特点 内存地址分配 区别 应用 IO端口地址译码 硬件上的实现 示例1&#xff1a; 示例2&#xff1a; IO指令 软件上的实现 示例

2024最佳画图软件合集,操作简单无需下载!

随着数字时代的到来&#xff0c;绘画软件已经成为创造性表达和艺术创作不可或缺的工具。无论你是设计师、艺术家&#xff0c;还是只是对创作充满热情&#xff0c;2024年的绘画软件集都为你提供了各种各样的选择&#xff0c;这样你就可以在数字画布上释放你的想法。本文将重点推…

XV4001系列陀螺仪传感器广泛用于车载导航系统

随着汽车电子化趋势的加速&#xff0c;越来越多的汽车配备一系列先进的车载导航系统&#xff0c;这些导航系统功能的实现都依赖于精确的传感器数据(位置、车速、转向角度、车轮转速等)。传感器作为这些系统的核心组件&#xff0c;其准确性和可靠性直接影响到整个导航系统的性能…

大模型时代,掌握Event Stream技术提升Web响应速度

大模型时代,每天搜索都可能会用到一种或多种大模型,在大文本输出的时候,页面是一字一字,一段一段的慢慢输出出来的,这背后是如何实现的呢?我们以KIMI为例 先抓个请求 我们发现界面展示是一句话,但是接口返回的时候是一个字一个字的。 普通请求 多了Event Stream的处理 …

头歌OpenGauss数据库-I.复杂查询第3关:统计总成绩

本关任务:计算每个班的语文总成绩和数学总成绩,要求科目中低于60分的成绩不记录总成绩。 tb_score结构数据: namechinesemathsA8998B9989C5566D8866E5566F8899tb_class表结构数据: stunameclassnameAC1BC2CC3DC2EC1FC3--#请在此添加实现代码 --# # # # # # # # # # Begin #…

DDoS攻击的最新动态及市场趋势分析

随着数字化转型的加速和网络连接设备的增加&#xff0c;分布式拒绝服务(Distributed Denial of Service, DDoS)攻击已经成为全球网络安全领域的一大威胁。根据最新的市场研究报告&#xff0c;预计到2028年&#xff0c;DDoS防护软件市场的复合年增长率将达到14%以上&#xff0c;…

爬虫实训案例:中国大学排名

近一个月左右的时间学习爬虫&#xff0c;在用所积累的知识爬取了《中国大学排名》这个网站&#xff0c;爬取的内容虽然只是可见的文本&#xff0c;但对于初学者来说是一个很好的练习。在爬取的过程中&#xff0c;通过请求数据、解析内容、提取文本、存储数据等几个重要的内容入…

qmt量化交易策略小白学习笔记第10期【qmt编程之获取股票订单流数据--内置Python】

qmt编程之获取股票订单流数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;需免费开通量化回测与咨询实盘权限&#xff0c;可以和博主联系&#xff01; 获取股票订单流…

Undet for SketchUp 2023.3 点云建模软件 支持支持草图大师sketchup2021-2022-2023

1.Undet for sketchup 2023.3支持草图大师sketchup2021-2022-2023。支持机载雷达扫描、车载扫描还是地面扫描&#xff0c;对AEC行业用户来说&#xff0c;真正需要的是如何将这些数据快速处理为三维模型&#xff0c;这样才能将这些信息延展到BIM领域发挥效用。因此面对这些海量的…

开源大模型与闭源大模型:谁主沉浮?

目录 &#x1f349;引言 &#x1f349;数据隐私 &#x1f348;开源大模型的优势与挑战 &#x1f34d;优势&#xff1a; &#x1f34d;挑战&#xff1a; &#x1f348;闭源大模型的优势与挑战 &#x1f34d;优势&#xff1a; &#x1f34d;挑战&#xff1a; &#x1f34…

openwrt设置开机自启 tailscale为例

首先下载 tailscale 到 /root 目录下&#xff0c;并按照以下命令运行一次 /root/tailscale/tailscaled --state/root/tailscale/tailscaled.state & /root/tailscale/tailscale up &弹出登录地址并授权即可 创建一个启动脚本位置在/etc/init.d下 vim /etc/init.d/ta…

云计算如何保障数据的安全性和隐私性?

云计算通过多种技术和措施来保障数据的安全性和隐私性。以下是一些常见的安全措施&#xff1a; 数据加密&#xff1a;云计算服务提供商使用数据加密技术来保护数据的机密性。数据在传输过程中使用传输层安全协议&#xff08;TLS&#xff09;进行加密&#xff0c;存储在云中时也…

本地idea连接虚拟机linux中的docker进行打包镜像上传--maven的dockerfile-maven-plugin插件

项目名必须是英文,-,.,_,这些数字,idea需要管理员运行,因为idea控制台mvn命令需要管理员权限才能运行(maven需配置环境变量)改linux中的Docker服务文件,使用2375 进行非加密通信,然后加载重启 2.1 #修改Docker服务文件 vi /lib/systemd/system/docker.service ​ # 通常使…

网络模型-PoE技术

一、PoE简介 以太网供电PoE(Powerover Ethernet)是指通过以太网网络进行供电&#xff0c;也被称为基于局域网的供电系统PoL(PoweroverLAN)或有源以太网(Active Ethernet)。 1、PoE的优势: 可靠: 电源集中供电&#xff0c;备份方便。连接简捷: 网络终端不需外接电源&#xf…