HarmonyOS(31) @Prop标签使用指南

@Prop

  • @Prop简介
  • @State和@Prop的同步场景
  • 使用示例
  • 参考资料

@Prop简介

子组件中@Prop装饰的变量可以和父组件建立单向的同步关系。子组件@Prop装饰的变量是可变的,但是变化不会同步回其父组件。@Prop变量允许子组件修改,但修改后的变化不会同步回父组件。当父组件数据源更改时,@Prop装饰的变量都会更新,并且会覆盖本地所有更改。因此,数值的同步是父组件到子组件(所属组件),子组件数值的变化不会同步到父组件。
一言以蔽之父变子变,子变父不变

@State和@Prop的同步场景

  • 使用父组件中@State变量的值初始化子组件中的@Prop变量。当父组件@State变量变化时,该变量值也会同步更新至@Prop变量。

  • @Prop装饰的变量的修改不会影响其数据源@State装饰变量的值。

  • 除了@State,数据源也可以用@Link或@Prop装饰,对@Prop的同步机制是相同的。

  • 数据源和@Prop变量的类型需要相同,@Prop允许简单类型和class类型

使用示例

如下代码:

  • Child组件定义了一个用@Prop修饰的变量 count
  • Parent组件定义了一个用@State的变量countDownStartValue
  • Child的count变量由Parent组件的countDownStartValue初始化
@Component
struct Child{@Prop count: number = 0;build() {Column() {Text(`子组件当前数字 ${this.count}`)// @Prop装饰的变量不会同步给父组件Button(`子组件改变数字`).onClick(() => {this.count += 1;}).backgroundColor(Color.Red)}.margin({top:20})}
}@Entry
@Component
struct Parent {@State countDownStartValue: number = 16;build() {Column() {Text(`父组件当前数字 ${this.countDownStartValue}`)// 父组件的数据源的修改会同步给子组件Button(`父组件改变数字`).onClick(() => {this.countDownStartValue += 1;})//父组件Child({ count: this.countDownStartValue }).margin({top:10})}.width("100%").margin({top:100}).alignItems(HorizontalAlign.Center)}
}
  • 初始化页面效果如下:
    在这里插入图片描述
  • 当点击一次蓝色按钮时,Child和Parent的数字都变成17
  • 当再点击一次红色按钮时,只有Child的数字变成了18,不会同步到Parent组件中去
    在这里插入图片描述

参考资料

@Prop装饰器:父子单向同步

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

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

相关文章

cv2函数实践-图像处理(中心外扩的最佳RoI/根据两个坐标点求缩放+偏移后的RoI/滑窗切片/VOC的颜色+调色板)

目录💨💨💨 中心外扩的最佳RoI(裁图)根据两个坐标点求缩放偏移后的RoI自定义RGB2BGR颜色解析小函数滑窗切片(sliding window crops)VOC的颜色调色板 中心外扩的最佳RoI(裁图&#xf…

C++中delete指针后最好将其置空

在C编程中,当你使用delete运算符释放指针所指向的内存后,通常建议将该指针置空(即将指针设为nullptr)。这是因为这样做有几个重要的好处,可以帮助避免程序中的一些常见问题。具体来说,主要有以下几个原因&a…

python书上的动物是啥

Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是一个叫Monty Python…

【核心动画-转场动画-CATransition Objective-C语言】

一、转场动画,CATransition, 1.接下来,我们来说这个转场动画啊,效果呢,会做这么一个小例子, 感觉有一个3D的一个样式一样, 转场动画呢,就是说,你在同一个View,比如说,imageView,去切换图片的时候,你可以去用这个,转场动画, 实际上,包括,控制器之间的切换,也…

Python 机器学习 基础 之 【常用机器学习库】 Pandas 数据处理库

Python 机器学习 基础 之 【常用机器学习库】 Pandas 数据处理库 目录 Python 机器学习 基础 之 【常用机器学习库】 Pandas 数据处理库 一、简单介绍 二、Pandas 基础 1、安装 Pandas 2、导入 Pandas 3、基本数据结构 3.1 Series 3.2 DataFrame 4、基本操作 4.1 查看…

后知后觉发现美国又开始上升了

1. **美国人均GDP增长**: 美国经济近年来表现强劲,物价低,人收入持续增加,人均GDP直接奔向10万美元上方去了,目前已经接近10万美元。打破了固定认知,美国人口3亿多.说明人口多,人均GDP就低在逻辑学上是不成立的 2. 美墨移暴增: 美墨边…

插入排序—Java

插入排序 基本思想 &#xff1a;代码实现 基本思想 &#xff1a; 实现数组从小到大排从第二个数开始跟前面的数比较 找到合适的位置插入 后面的数往后推移 但推移不会超过原来插入的数的下标 代码实现 public static void InsertSort(int[] arr) {for(int i 1;i<arr.len…

GAN相关知识

GAN训练tricks generator的最后一层一般使用tanh激活函数&#xff0c;这样可以使训练更加稳定。但是我在实际用的时候&#xff0c;使用sigmoid和tanh的效果是差不多的&#xff1b;需要注意&#xff1a;discriminator的最后一层的输出的激活函数选择tanh&#xff0c;会导致cuda…

新手上路:Linux虚拟机创建与Hadoop集群配置指南①(未完)

一、基础阶段 Linux操作系统: 创建虚拟机 1.创建虚拟机 打开VM,点击文件,新建虚拟机,点击自定义,下一步 下一步 这里可以选择安装程序光盘映像文件,我选择稍后安装 选择linux系统 位置不选C盘,创建一个新的文件夹VM来放置虚拟机,将虚拟机名字改为master方便后续识别…

在Java单元测试后自动打印方法调用堆栈

单元测试是确保代码质量的关键环节。有时候,为了更深入地理解测试执行过程或定位难以捉摸的问题,查看测试执行期间的方法调用堆栈变得尤为重要。本文将介绍一种简单而有效的方法,在Java使用JUnit框架执行单元测试后,自动打印出当前线程的调用堆栈信息。 技术背景 Java标准…

期望24K,商汤科技golang开发 社招一二三 + hr 面

商汤科技对数据库和中间件相关的东西问的比其他的大厂要少很多&#xff0c;可能他们更多是和算法相关&#xff0c;没有什么高并发的场景。总体感觉对技术的要求不是特别高。当时问了他们主管&#xff0c;我面试的部门的工作是主要去实现他们算法部门研究的算法&#xff0c;感觉…

在LabVIEW项目管理中,如何确保团队之间的有效沟通和协作

在LabVIEW项目管理中&#xff0c;确保团队之间的有效沟通和协作对于项目成功至关重要。以下是一些方法和工具&#xff0c;可以帮助团队实现这一目标。 一、建立清晰的沟通渠道 1.1 项目启动会议 召开项目启动会议&#xff0c;让所有团队成员了解项目的背景、目标、范围和时间…

postgres数据库报错无法写入文件 “base/pgsql_tmp/pgsql_tmp215574.97“: 设备上没有空间

解决思路&#xff1a; base/pgsql_tmp下临时表空间不够 需要新建一个临时表空间指定到根目录之外的其他目录 并且修改默认临时表空间参数 解决方法&#xff1a; select * from pg_settings where name temp_tablespaces;mkdir /home/postgres/tbs_tmp CREATE TABLESPACE tbs_t…

[图解]企业应用架构模式2024新译本讲解09-领域模型2

1 00:00:01,750 --> 00:00:03,030 代码还是一样的 2 00:00:03,040 --> 00:00:12,640 我们还是从前面人家做的复刻案例来看 3 00:00:14,170 --> 00:00:15,200 这个是它的类图 4 00:00:15,640 --> 00:00:20,650 我们同样用UModel逆转&#xff0c;这个太小了&#…

Codeforces Round 950 (Div. 3) 题解分享

A. Problem Generator 思路 A&#xff1a;纯纯模拟&#xff0c;不多解释。 code inline void solve() {int n, m; cin >> n >> m;vector<int> cnt(26);string s; cin >> s;for (char c : s) cnt[c - A] 1;ll ans 0;for (int i 0; i < 7; i …

Spring (41)Eureka

Eureka是Netflix开发的服务发现框架&#xff0c;后来成为了Spring Cloud Netflix组件之一。它主要用于AWS云环境中管理服务间的注册与发现&#xff0c;但也可以在非AWS环境中工作。Eureka包含两个主要组件&#xff1a;Eureka Server和Eureka Client。 Eureka Server Eureka S…

windows RNDIS开发-概念

远程 NDIS (RNDIS) 是一种独立于总线的类&#xff0c;适用于动态 即插即用 (PnP) 总线&#xff08;例如 USB、1394、蓝牙和 InfiniBand&#xff09;上的以太网 (802.3) 网络设备。 远程 NDIS 通过抽象控制和数据通道在主计算机与远程 NDIS 设备之间定义与总线无关的消息协议。 …

【微信小程序】页面导航

声明式导航 导航到 tabbar 页 tabBar页面指的是被配置为tabBar的页面。 在使用<navigator>组件跳转到指定的tabBar页面时&#xff0c;需要指定url属性和open-type属性&#xff0c;其中&#xff1a; url 表示要跳转的页面的地址&#xff0c;必须以/开头open-type表示跳…

Java 18 新特性

Java 作为一门广泛应用于企业级开发和系统编程的编程语言&#xff0c;一直以来都在不断进化和改进。2022 年发布的 Java 18 版本为开发者带来了一些新的特性和改进&#xff0c;这些特性不仅提升了开发效率&#xff0c;还进一步增强了 Java 语言的功能和灵活性。本文将深入探讨 …

spring boot3登录开发-2(3邮件验证码接口实现)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 目录 写在前面 上文衔接 接口设计与实现 1.接口分析 2.实现思路 3.代码实现 1.定义验证码短信HTML模板枚举类 2.定义验证码业务接口 3. 验证码业务接口实现 4.控制层代码 4.测试 写…