ArkTS - @Prop、@Link

一、作用

@Prop 装饰器 和@Link装饰器都是父组件向子组件传递参数,子组件接收父组件参数的时候用的,变量前边需要加上@Prop或者@Link装饰器即可。(跟前端vue中父组件向子组件传递参数类似)

// 子组件
@Component
struct SonCom {
  @Prop name: string
  build() {
    // ···
  }
}
// 子组件
@Component
struct SonCom {
  @Link name: string
  build() {
    // ···
  }
}

二、区别

@Prop :单向数据同步,也就是只能父组件向子组件传递,子组件值改变了不会影响到父组件中的值(类似前端vue中的props)。

@Link:双向数据同步,既可以父组件向子组件传递值,子组件也可以向父组件传递值。(类似前端vue中的v-model,估计设计的时候参考了)

(1)演示@Prop:
子组件中的输入框值是由父组件传进去的,当点击父组件按钮,子组件输入框值发生改变;但是如果在子组件输入框中直接输入,子组件中的值虽然改变了,但是父组件userName不会发生变化。

// 子组件
@Component
struct SonCom {
  @Prop name: string
  build() {
    Row() {
      TextInput({text: this.name, placeholder: "请输入"})
        .width(280).padding(10)
        .onChange(val => {
          this.name = val
          console.log(`当前输入框的值: ${val}`)
        })
    }
  }
}
// 父组件
@Entry
@Component
struct FatherCom {
  @State userName: string = ""
  build() {
    Column({space: 10}) {
      Text("子组件:")
      Row() {
        SonCom({name: this.userName})
      }
      Divider()
      Text("父组件:")
      Row() {
        Button("改变子组件输入框的值").onClick(e => {
          this.userName = "派大星"
        })
      }
      Row() {
        Text(`在父组件中userName的值:${this.userName}`)
          .fontSize(16).fontWeight(FontWeight.Bold)
      }
    }.margin(20)
  }
}

页面如下:

点击父组件按钮,此时子组件输入框值发生改变:

但是直接在子组件输入框中直接输入,父组件userName没发生变化:

(2)演示@Link:
只把子组件@Prop换成@Link了:

// 子组件
@Component
struct SonCom {
  @Link name: string
  build() {
    Row() {
      TextInput({text: this.name, placeholder: "请输入"})
        .width(280).padding(10)
        .onChange(val => {
          this.name = val
          console.log(`当前输入框的值: ${val}`)
        })
    }
  }
}

在子组件输入框中输入值,父组件的userName也会跟着改变:

注:@Link装饰的变量,类型也可以时数组、对象复杂的数据类型,对数组的新增、替换、删除元素都可以监听到,当然对象的赋值啥的也能监听到,具体可查看文档。

@Link装饰器

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于JAVA的高校宿舍调配管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能需求2.1 学生端2.2 宿管2.3 老师端 三、系统展示四、核心代码4.1 查询单条个人习惯4.2 查询我的室友4.3 查询宿舍4.4 查询指定性别全部宿舍4.5 初次分配宿舍 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的…

HTTPS网站安全证书

随着互联网的迅猛发展,网络安全问题日益凸显,而HTTPS网站安全证书作为一项关键技术,正成为保护用户隐私和数据安全的不可或缺的手段之一。本文将介绍HTTPS网站安全证书的定义、作用、种类及部署过程,以帮助读者更好地理解和应用这…

QT----Visual stdio翻金币案例,附源码

历经一个月,各种事情磕磕绊绊,终于结束了,自己还是太菜了 案例的文档写的教程已经很详细,这边主要是记录一些问题 github代码 gitee代码 1、图片无法加载 一开始加载首页图片和标题出不来,结果是paintEvent重写的字打…

Java版企业电子招标采购系统源码——鸿鹄电子招投标系统的技术特点

在数字化时代,采购管理也正经历着前所未有的变革。全过程数字化采购管理成为了企业追求高效、透明和规范的关键。该系统通过Spring Cloud、Spring Boot2、Mybatis等先进技术,打造了从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通过…

opencv期末练习题(2)附带解析

图像插值与缩放 %matplotlib inline import cv2 import matplotlib.pyplot as plt def imshow(img,grayFalse,bgr_modeFalse):if gray:img cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)plt.imshow(img,cmap"gray")else:if not bgr_mode:img cv2.cvtColor(img,cv2.COLOR_B…

通信原理 | python调制识别数据及代码

import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchsummary import summary from torch.utils.data import DataLoader, TensorDataset

Hive学习(13)lag和lead函数取偏移量

hive里面lag函数 在数据处理和分析中,窗口函数是一种重要的技术,用于在数据集中执行聚合和分析操作。Hive作为一种大数据处理框架,也提供了窗口函数的支持。在Hive中,Lag函数是一种常用的窗口函数,可以用于计算前一行…

新全国产迅为龙芯 3A6000 处理器板卡

11月28日,“2023龙芯产品发布暨用户大会”在北京举行,迅为作为龙芯重要合作伙伴受邀参加,在整机产品发布仪式上,展示了基于龙芯 3A6000 处理器的全国产安全型工控计算机。 龙芯 3A6000 处理器完全自主设计、性能优异,代…

固定资产盘点系统设计与实现

固定资产盘点系统设计与实现 最近的业务需求不多,趁着闲的时候,顺便搞了个IT固定资产盘点系统,难度不大,比较实用,这个系统将来可以用在整个财务方面的固定资产盘点,结合Zebra的PDA扫描枪,还是比…

股票评级遭下调,苹果市值一夜蒸发超7000亿!未来还要继续跌?

美股2024年首个交易日就给投资者来了个“开门黑”,苹果市值一夜蒸发7600亿元,这可是个大新闻啊!而在这场大跌中,美国国债和多数美股指也未能幸免。 先来看看美国国债,路透社分析说,美国国债收益率的波动反映…

【Win10安装Tensorrt和torch2trt】

Win10安装Tensorrt和torch2trt 1 前言1.1 实验环境1.2 下载链接 2 具体安装2.1 TensorRT安装2.1.1 设置环境变量2.1.2 安装TensorRT资源包中的3个whl文件2.1.3 复制tensorrt的库到CUDA安装目录的指定文件夹 2.2 安装torch2trt2.3 验证是否安装成功 1 前言 1.1 实验环境 &…

STM32CubeMX RS485接口使用

一、基本知识 TTL(Transistor-Transistor Logic): 电平范围: 逻辑1对应于2.4V–5V,逻辑0对应于0V–0.5V。通信特点: 全双工。特点: 常见于单片机和微控制器的IO电平,USB转TTL模块通常…

小型洗衣机哪个好?口碑最好迷你洗衣机排行榜

洗衣机是我们日常生活中必不可少的家电之一,它可以让我们更加方便地清洗衣物,让我们的衣服更加干净和舒适。但是由于我们的内衣裤、袜子这些贴身衣物不能够直接扔进大型洗衣机与其他的衣物一起混洗,混洗会导致我们的衣物出现细菌的交叉感染&a…

医院信息系统集成平台—Ensemble集成平台中间件

Ensemble HIE(健康信息交换)是InterSystems公司一个新的产品,它采用了一种全新的解决方案,是一个强大的应用软件整合平台,它包括了为医疗信息交换预先开发好的组件,使用Ensemble可以快速地整合和开发复合应用程序。Ensemble在增强现有软件功能、协调新的商业过程和集中企…

红酒送礼选对不选贵,这些挑选技巧一定要收藏好

遇到过节的时候,大家都张罗着买点什么东西送给亲朋好友老丈人,领导同事丈母娘。云仓酒庄的品牌雷盛红酒LEESON分享选择最多的就是烟酒茶,烟和茶已经成为常态,送红酒却是一种新风尚。在琳琅满目的红酒品类中,怎么才能选…

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测 目录 分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 基于SVM-RFE-LSTM的特征…

工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)

工业相机如何实现实时和本地Raw图像和Bitmap图像的保存和相互转换(C#代码,UI界面版) 工业相机图像格式工业相机实现Raw图像和Bitmap图像的保存和转换的技术背景在相机SDK中获取图像转换图像的代码分析工业相机回调函数里保存Bitmap图像数据工…

【LeetCode-剑指offer】--15.找到字符串中所有字母异位词

15.找到字符串中所有字母异位词 方法&#xff1a;滑动窗口 class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> ans new ArrayList<>();int m s.length(),n p.length();if(n > m){return ans;}int[] cnt1 new i…

ES6 class详解

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

simulink代码生成(九)—— 串口显示数据(纸飞机联合调试)

纸飞机里面的协议是固定的&#xff0c;必须按照协议配置&#xff1b; &#xff08;1&#xff09;使用EasyHEX协议&#xff0c;测试int16数据类型 测试串口发出的数据是否符合&#xff1f; 串口接收数据为&#xff1a; 打开纸飞机绘图侧&#xff1a; &#xff08;1&#xff09…