鸿蒙组件数据传递:ui传递、@prop、@link

鸿蒙组件数据传递方式有很多种,下面详细罗列一下:

注意:
文章内名词解释:
正向:父变子也变 逆向:子变父也变

**第一种:直接传递

- 特点:1、任何数据类型都可以传递 2、不能响应式更新 (正向 逆向都不行) 3、适合纯ui渲染** 4、子组件需要初始化数据

@Entry
@Component
struct Demo04 {@State message: string = 'Hello World123'@State obj: Aa = {name: 'zhangsan'}build() {Row() {Column() {Text("基本数据类型")Son({ message: this.message })Divider().strokeWidth(2)Text("对象数据类型")Son({ obj:this.obj })Button('改变数据').onClick((event: ClickEvent) => {this.message = '666'})}.width('100%')}.height('100%')}
}@Component
struct Son {message: string = ''obj:Aa = {name:''}build() {Row() {Text(this.message)Text(this.obj.name)}}
}class Aa{name: string = ''
}

第二种:@prop传递

特点:1、只能传递基本数据类型 2、可以正向的响应式数据更新 3、适合父组件改变子组件数据,但是子组件无法改变父组件数据的需求 4、子组件不需要初始化数据

@Entry
@Component
struct Demo04 {@State message: string = 'Hello World123'@State obj: Aa = {name: 'zhangsan'}build() {Row() {Column() {Text(this.message)Button('改变数据').onClick((event: ClickEvent) => {this.message = '666'}).margin({bottom:20})Divider().strokeWidth(5)Text("基本数据类型")Son({ message: this.message })Divider().strokeWidth(2)Text("对象数据类型")// Son({ obj:this.obj })}.width('100%')}.height('100%')}
}@Component
struct Son {@Prop message:string// @Prop obj:Aabuild() {Row() {Text(this.message)// Text(this.obj.name)Button("逆向改变").onClick(() => {this.message = "子变父不变"// this.obj.name = "子变父不变"})}}
}class Aa{name: string = ''
}

第二种:@link传递

特点:1、任何数据类型都可以 2、可以正向和逆向的响应式数据更新 3、适合子父组件一起更新数据的需求 4、子组件不需要初始化数据

@Entry
@Component
struct Demo04 {@State message: string = 'Hello World123'@State obj: Aa = {name: 'zhangsan'}build() {Row() {Column() {Text(this.message)Text(this.obj.name)Button('改变数据').onClick((event: ClickEvent) => {this.message = '666'this.obj.name = "lisi123"}).margin({bottom:20})Divider().strokeWidth(5)Text("基本数据类型")Son({message:$message})Divider().strokeWidth(2)Text("对象数据类型")// Son({obj:$obj})}.width('100%')}.height('100%')}
}@Component
struct Son {@Link message:string// @Link obj:Aabuild() {Row() {Text(this.message)// Text(this.obj.name)Button("逆向改变").onClick(() => {this.message = "子变父不变"// this.obj.name = "子变父不变"})}}
}class Aa{name: string = ''
}

鸿蒙-传智播客-博学谷

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

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

相关文章

远程访问及控制

一、SSH远程管理 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录.远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。与早期的Telent(远程登录)、…

2023软考电子证书如何下载,哪些省份有电子证书?

每年都有很多考生咨询“软考电子证书如何下载,哪些省份有电子证书?” 今天就这两个主要问题跟大家说明下。 软考电子证书如何下载 相信很多考生说的“软考电子证书”是指中国人事考试网查询的”证书电子文件“,其实这两者是有所区别的。 …

前端函数配置化编程 - Element-plus

Element-plus 前端函数配置化编程 介绍 yc-setting-elment-plus 是一款针对了 element-plus 框架进行实现的配置化项目开发插件。其主要是基于 yc-config-create-setting 进行实现的,并且也对 typescript 进行了处理,它能够有效的对 element-plus 所有…

半新手向,webservice开发调用wsdl,调用他人的服务

背景 调用别人的服务 首先得有一个wsdl文件 这个文件可以手动发你,也可以通过链接网页,复制网页上的所有内容保存为wsdl文件。 以上为前提。 假设你已经有了wsdl文件。 wsdl文件有两种方式转成java文件 第一种wsimport E:\temp\webservice>wsimpo…

CSRF和SSRF原理、区别、防御方法

CSRF(Cross-Site Request Forgery)原理:CSRF是一种由攻击者构造形成,由服务端发起请求的一个安全漏洞。它是一种利用用户在已登录的网站中提交非法请求的行为,攻击者通过伪造用户提交的请求,将恶意请求发送…

C++的多继承和虚继承

目录 多继承的定义和用法定义多继承多继承中派生类对象的内存布局访问基类成员多继承带来的问题 虚继承虚继承的语法虚继承对象的内存布局虚继承中的构造虚继承的缺点 多继承的定义和用法 C支持多继承,即一个派生类可以有多个基类。 很多时候,单继承就…

效果图渲染电脑渲染好?还是云渲染更好?

效果图的渲染是建筑和室内设计领域中不可或缺的一步,随着技术的发展,云渲染作为一项新技术,正逐渐受到人们关注。今天,让我们深入探讨电脑渲染和云渲染这两种方法的优缺点以及它们的适用场景。 本地电脑渲染 本地电脑渲染是利用用…

往年面试精选题目(前50道)

常用的集合和区别,list和set区别 Map:key-value键值对,常见的有:HashMap、Hashtable、ConcurrentHashMap以及TreeMap等。Map不能包含重复的key,但是可以包含相同的value。 Set:不包含重复元素的集合&#…

库函数atoi的功能及模拟实现

atoi函数的功能 int atoi(const char * str) 参数是字符指针,函数值是转换后的int型数据。使用时要包含头文件stdlib.h。 atoi函数的功能是:跳过不可见(空白)字符(如空格、换页\f、换行\n、回车\r、制表符\t、垂直制表符\v),碰到正负号或…

cfa一级考生复习经验分享系列(十四)

首先说一下自己的背景,一个和金融没有半毛钱关系的数据分析师,之前考出了FRM。这次用一个半月突击12月的1级考试拿到了9A1B的成绩,纯属运气。以下纯属经(chě)验(dn),请看看就好&…

【webservice】cxf开发常见问题汇总

文章目录 1. 使用soapui测试时存在cdata嵌套的问题 1. 使用soapui测试时存在cdata嵌套的问题 说明&#xff1a;如果使用soapui进行webservice测试时要求数据放置在<![CDATA[ 和]]>中间&#xff0c;但是如果传递的XML文件中也存在cdata&#xff0c;并且不做处理的话&…

在k8s中使用cert-manager部署gitlab集群

写在前面的话&#xff1a;前面有详细的分享过在k8s集群中部署gitlab&#xff0c;不过当时使用gitlab的访问证书是阿里云上免费的ssl证书&#xff0c;今天特意专门介绍下另外一种基于cert-manager发布自签证书的方式实现部署gitlab到k8s集群中。 往期gitlab部署系列如&#xff1…

【ESP32运行MicroPython】连接无线网络、延迟和定时、实时时钟 (RTC)、WDT(看门狗定时器)

常用语法如下 import network wlan network.WLAN(network.STA_IF) #创建工作站接口 wlan.active(True) #激活接口 Wlan.scan() #扫描接入点 wlan.isconnected() #检查站点是否连接到AP wlan.connect(ssid&#xff0c; key) #连接AP wifi名称与密码 wlan.config(mac) #获取接口…

麒麟信安桌面操作系统顺利上线长沙职业技术学院,深度促进产教融合,赋能信创人才培养

随着信息基础设施国产化进程的加快&#xff0c;信息技术创新产业对人才的需求量激增&#xff0c;为解决信创人才培养难题、深度促进产教融合&#xff0c;近日&#xff0c;麒麟信安、湖南欧拉生态创新中心携手长沙职业技术学院共同组建的“麒麟信安&欧拉(openEuler)国产操作…

【小黑嵌入式系统第十三课】PSoC 5LP第二个实验——中断控制实验

上一课&#xff1a; 【小黑嵌入式系统第十二课】μC/OS-III程序设计基础&#xff08;二&#xff09;——系统函数使用场合、时间管理、临界区管理、使用规则、互斥信号量 文章目录 1 实验目的2 实验要求3 实验设备4 实验原理4.1 中断(1) 中断机制概述(2) 中断源(3) 中断系统的功…

DshanMCU-R128s2硬件设计参考

R128 DevKit 开发板 硬件工程开源地址&#xff1a;https://oshwhub.com/gloomyghost/r128-module电路图&#xff1a;SCH_R128-DevKit_2023-09-05.pdfPCB&#xff1a;ProDocument_R128-DevKit_2023-09-05.eproGERBER&#xff1a;Gerber_R128-DevKit_2023-09-05.zipSTL&#xff…

鸿蒙开发语言介绍--ArkTS

1.编程语言介绍 ArkTS是HarmonyOS主力应用开发语言。它在TypeScript (简称TS)的基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等相应的能力&#xff0c;让开发者以更简洁、更自然的方式开发跨端应用。 2.TypeScript简介 自行补充TypeScript知识吧。h…

python对图片进行旋转操作

Python提供了许多库来对图片进行操作,其中最常用的可能是PIL(Python Imaging Library,又名Pillow)。Pillow库允许你进行诸如读取、修改和保存图像等操作。 以下是一个简单的例子,展示了如何使用Pillow库来打开一张图片,对其进行一些简单的操作,然后保存结果: from PI…

鸿蒙列表,item组件封装传参问题?@ObjectLink 和@Observerd

鸿蒙列表渲染&#xff0c;封装内容组件&#xff0c;进行item传参会报错&#xff1f; class FoodClass {order_id: number 0food_name: string ""food_price: number 0food_count: number 0 }Entry Component struct Demo07 {State message: string Hello World…

ElasticSearch 架构设计

介绍 ElasticSearchMySQLIndexTableDocumentRowFieldColumnMappingSchemaQuery DSLSQLaggregationsgroup by&#xff0c;avg&#xff0c;sumcardinality去重 distinctreindex数据迁移 参考博客 [1]