关于HarmonyOs的参数传递UI刷新以及List,Grid嵌套数据传递,ui刷新问题总结

最近在学习开发过程中遇见一系列的参数传递以及ui刷新问题,在这里做个总结分享。

以下是在开发过程中遇见的问题:

1.页面与子组件之间的参数传递与UI刷新

2.@Builder自定义内部子组件的参数传递与UI刷新

3.Grid与List item发生变化Ui刷新问题

4.List嵌套Grid多层Array嵌套数据状态发生变化Ui刷新

页面与子组件之间的参数传递与Ui刷新

在刚开始的时候认为@State @Prop @Link这几个是用来控制数据是否发生改变,然后来控制ui的刷新,

cke_52280.png

因此在定义子组件的时候定义了 一个@State uiState :number =0,来控制ui每次刷新,其他参数并没有用装饰器修饰

结果:子组件ui没有刷新

解决方案:使用装饰器来配合参数传递,子组件中用@Prop或者@Link装饰器来修饰参数。

@Builder自定义内部子组件的参数传递与UI刷新

问题:在@Builder装饰器修饰的内部组件中传值,按值传递参数,参数发生改变时UI没有发生相应的改变

cke_185014.png

解决方案:

@Builder装饰器修饰的方法有状态改变需要刷新ui的时候需要使用按引用传值,详情请参考文档
文档中心

Grid与List item发生变化Ui刷新问题

问题:在Grid和List中点击item,item状态发生改变,但是ui没有刷新

解决方案:

通过ForEeah迭代出来的组件,直接操作item数据,列表检测不到数据源发生变换,因此不会刷新ui

需要通过position直接操作Array中的元数据,这个时候系统会检测到元数据发生变换,ui会再次刷新

cke_429216.png

List嵌套Grid多层Array嵌套数据状态发生变化Ui刷新

问题:从服务器中请求下来的元数据嵌套了三层,当最底层的Bean状态发生改变,List嵌套Grid中Grid的item 的ui没有刷新,

@State检测不到二级数组的变化,object内部属性更新不会即时刷新ui

解决方案:

在改变完元数据Bean的状态后,需要给List从新赋值

this.allList = this.allList :没有效果

this.allList = [...this.allList] //展开数组再合起来,把值赋回去,这样子新开了一个内存浅拷贝,0层级的变化

系统会检测到allList数据发生变化,ui也会重新绘制

闲扯

在解决3,4问题的过程中也尝试使用了@ObjectLink 和@Observed装饰器检测对象属性的变化 

但是@ObjectLink修饰的变量对象在传值的过程中需要传 new一个@Observed装饰器修饰的对象

我的对象是从服务器获取数据之后直接赋值的,因此不能直接new所以就不能使用

在当前场景不适用

个人对以上遇见问题的整理,欢迎指正

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

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

相关文章

uniapp条件判断,在各平台执行不同代码等详解

文章目录 1️⃣ 条件判断1.1 方法支持1.2 写法1.3 js文件写法1.4 vue文件写法1.5 css文件写法1.6 平台名称详解优质资源分享作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/135260505 uniapp条件判断,在各平台执行不同代码等详解,uniapp代码…

keil如何查看flash和ram占用情况

Keil MDK编译器下查看占用Flash和SRAM空间大小_keil sdram 1k-CSDN博客 1、如何查看各函数占用内存大小: keil查看使用的内存还剩多少_keil如何查看空间-CSDN博客

陈述式资源管理(2)

命令行。声明式资源管理 三种常见的项目发布方式: 1、蓝绿发布 2、金丝雀发布(灰度发布) 3、滚动发布 应用程序升级,最大困难就是新旧业务之间的切换。立项 --- 定稿 --- 需求发布 --- 开发 --- 测试 --- 发布。测试之后上线…

docker搭建Dinky —— 筑梦之路

简介 Dinky 是一个 开箱即用 、易扩展 ,以 Apache Flink 为基础,连接 OLAP 和 数据湖 等众多框架的 一站式 实时计算平台,致力于 流批一体 和 湖仓一体 的探索与实践。 主要功能 其主要功能如下: 沉浸式 FlinkSQL 数据开发&#x…

【感知机】感知机(perceptron)学习算法的原始形式

感知机( perceptron )是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取1 和-1二值。感知机对应输入空间(特征空间)中将实例划分为正负两类的分离超平面,是一种判别模型。感知机是神经网络与支持向量机的基础…

在Golang中如何配置WebSocket以使用wss

在Golang中配置WebSocket以使用wss(WebSocket over TLS)需要使用TLS(Transport Layer Security)来加密WebSocket连接。以下是一个简单的示例代码,演示了如何在Golang中配置WebSocket以使用wss: package ma…

C#_var

文章目录 一、前言二、隐式类型的局部变量2.1 var和匿名类型2.2 批注 三、总结 一、前言 C#中有一个 var 类型,不管什么类型的变量,都可以用它接收,实属懒人最爱了。 我没有了解过它的底层,甚至没看过它的说明文档,也…

大创项目推荐 深度学习动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

Windows10系统打开管理员命令提示符的六种

在Windows10系统的运行过程中,我们常常需要打开管理员命令提示符,打开Windows10系统管理员命令提示符的方法很多,下面总结一下打开Windows10系统管理员命令提示符的方法。 工具/原料 硬件:电脑 操作系统:Windows10 …

.NET国产化改造探索(一)、VMware安装银河麒麟

随着时代的发展以及近年来信创工作和…废话就不多说了,这个系列就是为.NET遇到国产化需求的一个闭坑系列。接下来,看操作。 安装银河麒麟 麒麟系统分银河麒麟和中标麒麟,我选择的是银河麒麟服务器版的,关于如何下载,…

传统企业数字化转型怎么做?建议掌握这“5要素,7步骤,12维度”

关于“传统企业数字化转型”的文章,我看过很多,但大多数的内容都比较虚幻,无法落地执行~ 基于此,下面我来给出具体的一些建议,供大家参考! 一、传统企业数字化转型5要素 人、数据、洞察力、行动和结果。这…

Spring ApplicationEvent事件处理

Spring的事件 ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。 ApplicationEvent就是Spring的事件接口Applic…

C# 中包含反斜线 \ 的字符串处理

在 C# 中,当您定义包含反斜线 \ 的文件路径字符串时,需要注意反斜线在字符串中通常用作转义字符的起始符。要在字符串中表示一个实际的反斜线字符,您有两个选择: 双反斜线:使用两个连续的反斜线 \\ 来表示一个实际的反…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连(C#) Baumer工业相机Baumer工业相机的掉线自动重连的技术背景通过PnP事件函数检查Baumer工业相机是否掉线在NEOAPI SDK里实现相机掉线重连方法:工业相机掉线重连测试演示图…

Linux tar 命令

Linux tar&#xff08;英文全拼&#xff1a;tape archive &#xff09;命令用于备份文件。 tar 是用来建立&#xff0c;还原备份文件的工具程序&#xff0c;它可以加入&#xff0c;解开备份文件内的文件。 语法 tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][…

Linux文件和目录管理命令---- head 命令

head 命令是 Linux 和类 Unix 系统中常用的文本处理工具,主要用于显示文件的开头部分内容。以下是 head 命令的主要参数和一些常用的使用方法: 1. 基本用法 命令: head [文件]用途: 显示指定文件的前10行内容。示例:[root@localhost ~]# head /etc/passwd root:x:0:0:root:/…

以角色为基础的软件开发团队建设

角色抽象作为一种载体&#xff0c;可以很好地进行软件工程知识体系和企业知识地图的组织&#xff0c;满足企业知识体系持续改进的需要&#xff0c;因此角色团队组建和建设也可以作为软件工程实施方法之一。 软件开发项目立项时&#xff0c;重要工作之一就是开发团队的组建&…

AI计算,为什么要用GPU?

今天这篇文章&#xff0c;我们继续来聊聊芯片。 在之前的文章里&#xff0c;小枣君说过&#xff0c;行业里通常会把半导体芯片分为数字芯片和模拟芯片。其中&#xff0c;数字芯片的市场规模占比较大&#xff0c;达到70%左右。 数字芯片&#xff0c;还可以进一步细分&#xff0…

LeetCode——栈

栈 特点&#xff1a; 先进后出&#xff0c;后进先出 适合&#xff1a; 相当于一个暂存的地方&#xff0c;方便回来找 特&#xff1a; 单调栈——需要找到左边或者右边第一个比当前位置数大或者小的数字 数据类型 LinkedList<T> stack new LinkedList<>(); ad…

ECharts配置个性化图表:圆环、立体柱状图

官网调试地址&#xff1a;调试 效果图&#xff1a; 配置&#xff1a; option {color: [#29BEFF, #A2DC00, #FFC400, #FF7F5C, #CA99FC],// 提示窗tooltip: {trigger: item,show: false},// 图例legend: {top: 5%,left: center,show: false},// 数据series: [{name: Access …