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

news2024/11/16 15:57:06

@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.coloradmin.cn/o/1793403.html

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

相关文章

【ARM】PK51-如何添加芯片型号的方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 遇到打开工程提示没有该芯片设备提示如何解决。 2、 问题场景 客户发来一个工程文件,打开后软件提示没有发现该芯片设备提示。 图 1 3、软硬件环境 1)、软件版本:keil μvision…

【MySQL数据库】:MySQL内外连接

目录 内外连接和多表查询的区别 内连接 外连接 左外连接 右外连接 简单案例 内外连接和多表查询的区别 在 MySQL 中,内连接是多表查询的一种方式,但多表查询包含的范围更广泛。外连接也是多表查询的一种具体形式,而多表查询是一个更…

微服务开发与实战Day02 - Docker

一、Docker快速入门 快速构建、运行、管理应用的工具 安装部署教程:Docs 1. 部署MySQL 测试连接: 镜像和容器 当我们利用Docker安装应用时,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身&#xff…

数字IC后端物理验证PV | TSMC 12nm Calibre Base Layer DRC案例解析

基于TSMC 12nm ARM A55 upf flow后端设计实现训练营将于6月中旬正式开班!小班教学!目前还有3个名额,招满为止!有需要可以私信小编 ic-backend2018报名。吾爱IC社区所有训练营课程均为直播课! 这个课程支持升级成双核A…

LeetCode322.零钱兑换

文章目录 题目描述解题思路递归记忆化搜索动态规划另一种实现 题目描述 https://leetcode.cn/problems/coin-change/description/?envTypestudy-plan-v2&envIdtop-interview-150 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount …

【全开源】废品回收垃圾回收小程序APP公众号源码PHP版本

🌟废品回收小程序:绿色生活的新助手🌱 一、引言 随着环保意识的逐渐提高,废品回收成为了我们日常生活中的重要一环。但是,如何更方便、高效地进行废品回收呢?今天,我要向大家推荐一款超级实用的…

UE4获取动画序列资产的动画时长

谢谢”朝闻道“大佬的指点~

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第6章——级数

第2 部分:数学分析中的基本概念 (Concepts in Analysis) 6. 级数(Series) 本章从等比级数(geometric series)开始,研究可以使用公式计算无限和的条件。它讨论了部分和与级数收敛的符号、图形表示和定义,并将它们应用于调和级数。它介绍了级…

从提示工程到代理工程:构建高效AI代理的策略框架概述

自ChatGPT推出以来,仅仅一年多的时间里,公众对于“人工智能”(AI)的认识已经发生了根本性的变化。这种变化部分源于公众意识的提高,更多则是基于这样一个认识:AI驱动的系统不仅可能,而且可能已经…

靠AI创意,我已经变现20w!

之前我一直在各个平台,分享各类的 AI 工具,但单纯地为了学而学,是没有任何意义的。 这些 AI 工具,学会了放着吃灰,那就太亏了! 最近在和粉丝聊的过程中,发现大家对 AI 副业还是挺感兴趣的。 …

「Qt Widget中文示例指南」如何实现一个简单的RHI小部件示例(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文将为大家演示如…

重学java 52.Collections集合工具类、泛型

"我已不在地坛&#xff0c;地坛在我" —— 《想念地坛》 24.5.28 一、Collections集合工具类 1.概述:集合工具类 2.特点: a.构造私有 b.方法都是静态的 3.使用:类名直接调用 4.方法: static <T> boolean addAll(collection<? super T>c,T... el…

学习笔记——IP地址网络协议——网络掩码(Netmask)

三、网络掩码(Netmask) 1、网络掩码概述 网络掩码(Netmask)又称子网掩码(Subnet Mask)网络掩码为32 bit&#xff0c;与IP地址的位数一样&#xff0c;通常也以点分十进制数来表示。 子网掩码不能单独存在&#xff0c;它必须结合IP地址一起使用。子网掩码只有一个作用&#xf…

SpringBoot 单元测试 指定 环境

如上图所示&#xff0c;在配置窗口中添加--spring.profiles.activedev&#xff0c;就可以了。

创建采购订单免费行项目,注意事项

1.我在使用bapi&#xff08;BAPI_PO_CREATE1&#xff09;创建采购订单免费行项目的时候&#xff0c;还是报错了请输入净价格。 解决方式&#xff1a;把这些数据都赋值好&#xff0c;那么你的采购订单行项目就是免费项目。 BAPIMEPOITEM-IR_IND 空 &#xff08;发票收据标识&am…

【C语言】文件操作(终卷)

前言 我们在上一卷中了解了顺序读写的函数&#xff0c;现在就让我们从随机读写的函数开始吧。 什么是随机读写&#xff1f; 就是想在哪个位置读或写都行&#xff0c;比较自由。文件打开时光标默认在起始位置。想从后面的某个部分读或写&#xff0c;就得让文件指针来到那个位…

Linux系统Docker部署Apache Superset并实现远程访问详细流程

目录 前言 1. 使用Docker部署Apache Superset 1.1 第一步安装docker 、docker compose 1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问 3. 设置固定连接公网地址 前言 作者简介&#xff1a; 懒大王敲代码&#xff0…

【小工具】电磨机

BUSCH DREMEL3000 博世 琢美 技术规范

儿童护眼灯什么牌子好点?五款儿童护眼灯品牌推荐

儿童护眼灯什么牌子好点&#xff1f;根据往年的统计&#xff0c;我国青少年近视率位居世界第一&#xff0c;儿童青少年总体近视率达到了52.7%。其中&#xff0c;6岁儿童的近视率为14.5%&#xff0c;小学生为36.0%&#xff0c;初中生为71.6%&#xff0c;高中生为81%。造成近视的…

事务与锁的顺序不对导致并发的问题

错误使用锁和事务导致并发 在事务中添加锁来解决并发的问题&#xff0c;这并没有解决并发的问题。 Transactional Override public void execute(){try {lock.lock()// 开启锁// 查询出数据mapper.select();// 根据查询出数据计算并写入到数据库中mapper.udpate()} finally {…