HarmonyOS--@ObjectLink和@Observed

@ObjectLink和@Observed装饰器用于在涉及嵌套对象或数组元素为对象的场景中进行双向数据同步。
在HarmonyOS应用开发中,@ObjectLink和@Observed是两个重要的注解,它们主要用于实现分布式数据的跨设备传输和同步:

  1. @ObjectLink

    • 通俗解释:这个注解可以理解为“对象链接”,用于标记一个类或者类中的属性,使得它具备跨设备的能力。当一个对象被标注了@ObjectLink后,它可以作为一个独立的数据实体,在不同的HarmonyOS设备之间进行共享和通信。
    • 应用场景:比如在多设备协同场景下,一台设备上的某个数据对象(如播放列表、待办事项等)通过@ObjectLink标记后,可以自动地在其他设备上创建对应的实例,并保持数据同步。
  2. @Observed

    • 通俗解释@Observed注解可以看作是一个“观察者模式”的实现,用在类属性上时,表示该属性的变化会被系统自动监测并实时更新到关联的对象或组件中。
    • 工作机制:当一个属性被@Observed修饰,当这个属性的值发生变化时,HarmonyOS框架会自动触发相应UI或业务逻辑的更新,无需手动编写监听代码。
    • 应用场景:在构建用户界面时尤为实用,例如将@Observed应用于模型层的属性,当属性值发生改变时,绑定此属性的UI控件能够自动刷新显示新的内容。

总结

@ObjectLink注解主要用于支持分布式环境下的数据对象跨设备共享,而@Observed注解则实现了数据变化与用户界面及业务逻辑之间的自动同步机制,极大地简化了开发者在处理跨设备交互和数据更新方面的开发工作。

@Component  
struct TaskItem {  @ObjectLink item :Task  onTaskChange :()=>void // 定义一个无参数无返回值的函数  build() {  Row() {  if (this.item.finished) {  Text(this.item.name)  .fontSize(24)  .fontColor(Color.Grey)  }         else {  Text(this.item.name)  .fontSize(24)  .whiteFont()  }  Checkbox()  .select(this.item.finished)  .selectedColor(0xed6f21)  .onChange((value: boolean) => {  this.item.finished = value  this.onTaskChange()  // 调用外部传进来的handleChange函数  })  }      .card()  .justifyContent(FlexAlign.SpaceBetween)  .margin(6)  }  
}
.........
// =======================渲染列表st======================//  
List({ space: 10 }) {  ForEach(this.tasks, (item: Task, index) => {  ListItem() {  TaskItem({item:item,onTaskChange:this.handleTaskChange.bind(this)}) // 将Item和函数传入到TaskItem组件中,同时用bind方法绑定this指向  }  .swipeAction({ end: this.deleteButton(index) }) // 列表的右滑功能函数  })  
}  
.width('100%')  
.layoutWeight(1) // 将剩下的空间全部给list元素  
.alignListItem(ListItemAlign.Center) // 列表元素居中  
// =======================渲染列表end======================//

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

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

相关文章

你好,C++对象

你好,对象 面向对象开发对象的定义 类与对象类的定义类的访问限定符及封装类的实例化类对象模型结构体内存对齐规则 this指针this指针的引入 this指针的特性 类的默认成员函数构造函数析构函数拷贝构造函数结语 面向对象开发 对象的定义 对象的含义是指具体的某一…

MySQL 聚集与非聚集索引

文章目录 1.聚集索引1.1 介绍1.2 优点1.3 缺点 2.非聚集索引3.区别参考文献 MySQL 中,根据索引树叶结点存放数据行还是数据行的地址,可以将索引分为两类: 存放数据行:聚集索引存放数据行地址:非聚集索引 InnoDB 使用聚…

Keil-C语言小总结

1、 &取地址符,*取地址内容 int *ptr;//声明指针 2、ptr &c; // 将c的地址赋值给指针变量ptr 3、可选参数函数 4、C宏定义 5、 memset:最快的数据清零函数 void *memset(void *s, int ch, size_t n); 分别是 字符串 要值的数据(0…

TensorFlow2实战-系列教程4:数据增强:keras工具包/Data Augmentation

🧡💛💚TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 对于图像数据,将其进行翻转、放缩、平移、旋转操作就可以得到一组新的数据…

分布式ID(3):雪花算法生成ID之UidGenerator(百度开源的分布式唯一ID生成器)

1 UidGenerator官方地址 UidGenerator源码地址: https://github.com/baidu/uid-generator UidGenerator官方说明文档地址: https://github.com/baidu/uid-generator/blob/master/README.zh_cn.md 这边只做简单介绍,详细说明请看官方说明文档。 2 Snowflake算法 Snowfl…

spring boot学习第八篇:操作elastic search的索引和索引中的数据

前提参考&#xff1a;elastic search入门-CSDN博客 前提说明&#xff1a;已经安装好了elastic search 7.x版本&#xff0c;我的es版本是7.11.1 1、 pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns&q…

空间计算时代催生新一波巨大算力市场需求

什么是空间计算&#xff1f; 空间计算是一种整合虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR&#xff09;、混合现实&#xff08;MR&#xff09;等技术的计算模式&#xff0c;旨在将数字信息与真实世界融合在一起。这种融合创造了一个全新的计算环境&#xff…

【极数系列】docker环境搭建Flink1.18版本(04)

文章目录 引言01 Linux安装Docker1.安装yum-utils软件包2.安装docker3.启动docker4.设置docker自启动5.配置Docker使用systemd作为默认Cgroup驱动6.重启docker 02 docker部署Flink1.18版本1.拉取最新镜像2.检查镜像3.编写dockerFile文件4.执行dockerFile5.检查flink是否启动成功…

一个SSE(流式)接口引发的问题

前言 最近我们公司也是在做认知助手&#xff0c;大模型相关的功能&#xff0c;正在做提示词&#xff0c;机器人对话相关功能。想要提高用户体验&#xff0c;使用SSE请求模式&#xff0c;在不等数据完全拿到的情况下边拿边返回。 之前做过一版&#xff0c;但不是流式返回&…

机房环境动力监控系统:S275远程控制网关助力高效管理

现场问题 1、机房安全隐患 机房存在意外断电、温湿度过高过低、漏水断路等隐患&#xff0c;传统监测手段难以提前发现和预警。 2、机房远程运维困难 因环境改变、非授权活动、设备状态变化等引起的事故&#xff0c;难以满足机房远程运维的可靠管控要求。 3、机房改造成本高…

Django 实现SS

1、简单的sse只要用django内置的StreamingHttpResponse就可以实现 2、django-sse这个第三方库已经有10年没有更新&#xff0c;不要用这个库了。 3、告知前端关闭SSE连接需要发送yield "event: close\ndata: \n\n" 而不能只发送yield "event: close\n" …

菱形打印和十进制ip转二进制

1.菱形打印 用for循环 #!/bin/bashread -p "请输入菱形的大小&#xff1a;" num #打印向上的等腰三角形 for ((i1;i<num;i)) dofor ((jnum-1;j>i;j--))doecho -n " " #打印的是前面的空格donefor ((k1;k<2*i-1;k))doecho -n "*" #打印…

OneNote中的键盘快捷记录(超全)

本文列出了桌面 WindowsOneNote 的键盘快捷方式。 常用快捷方式 执行的操作 按 打开新的 OneNote 窗口。 CtrlM 创建 快速笔记。 CtrlShiftM 或 AltWindows 徽标键N 停靠 OneNote 窗口。 CtrlAltD 撤消前一个操作。 CtrlZ 如果可能&#xff0c;请重做上一个操作。 …

HCIE之BGP正则表达式(四)

BGP 一、AS-Path正则表达式数字| 等同于或的关系[]和.$ 一个字符串的结束_代表任意^一个字符串的开始()括号包围的是一个组合\ 转义字符* 零个或多个&#xff1f;零个或一个一个或多个 二、BGP对等体组三、BGP安全性 一、AS-Path正则表达式 正则表达式是按照一定模版匹配字符串…

《思考的快与慢》部分整理

认知心理学机位大洞见&#xff1a;人类大脑的默认模式是系统1&#xff0c;而不是系统2&#xff0c;人类大脑遵循“能不用脑&#xff0c;就不用脑”的原则。 系统1&#xff08;快系统&#xff09;对应着我们常说的直觉思维 系统2&#xff08;慢系统&#xff09;对应着理性思维…

Linux实验记录:使用RAID(独立冗余磁盘阵列)

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 目录 前言&#xff1a; 备注&#xff1a; 部署磁盘阵…

Vue路由

1. 路由的基本概念 1.1. 什么是路由&#xff1f; 路由的概念 路由的本质就是一种对应关系&#xff0c;比如说我们在url地址中输入我们要访问的url地址之后&#xff0c;浏览器要去请求这个url地址对应的资源。 那么url地址和真实的资源之间就有一种对应的关系&#xff0c;就是…

成功解决IndexError: index 0 is out of bounds for axis 1 with size 0.

成功解决IndexError: index 0 is out of bounds for axis 1 with size 0. &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;报错分析及解决方案&#x1f333;&#x1f333;参考文章&#x1f333;&#x1f333;结尾&#x1f333; &#x1f333;…

Cesium.js实现显示点位对应的自定义信息弹窗(数据面板)

零、相关技术选型&#xff1a; Vue2 Vuecli5 Cesium.js 天地图 一、需求说明 在使用2D地图&#xff08;天地图、高德地图等&#xff09;基于官方文档可以实现下面需求&#xff1a; 实现添加点位&#xff0c;并在点位附近显示对应的信息弹窗。 一般信息弹窗的显示方式有两种&am…

【数据结构1-2】二叉树

树形结构不仅能表示数据间的指向关系&#xff0c;还能表示出数据的层次关系&#xff0c;而有很明显的递归性质。因此&#xff0c;我们可以利用树的性质解决更多种类的问题。 但是在平常的使用中&#xff0c;我们并不需要使用这么复杂的结构&#xff0c;只需要建立一个包含int r…