Harmony OS 父子组件传参

Harmony OS 父子组件传参案例

一、@Prop:从父组件单向同步状态

类似于vue的prop传参,只能父组件传参给子组件

当点击父组件的按钮时,改变message值,参数跟着更新。并且子组件也跟着更新(前提是要子组件加上@prop装饰器并且参数名称一致)。

当点击子组件按钮想要改变message时,父组件的message改变不了,只能改变子组件的参数

父组件代码:

import propTest from "../view/propTest"
@Entry
@Component
struct UseProp {@State message: string = '父组件prop'build() {Column() {Text(this.message).fontSize(22).fontWeight(FontWeight.Bold)propTest({message:this.message})Button('父组件按钮--变').onClick((event: ClickEvent) => {this.message="父组件事件触发-变"})}.width('100%')}}

子组件代码:

@Component
export default struct propTest {@Prop message: string ;build() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold).fontColor(Color.Green)Button('子组件按钮').onClick((event: ClickEvent) => {this.message="子组件变化"}).backgroundColor(Color.Green)}.width('100%')}}

图1.运行时效果图                  图2.点击父组件按钮时                    图3.点击子组件按钮时

二、与父组件双向同步状态:@Link

若是父子组件状态需要相互绑定进行双向同步时,可以使用@Link装饰器。父组件中用于初始化子组件@Link变量的必须是在父组件中定义的状态变量。

当父组件点击按钮时 父子组件的参数同时会+2

当子组件点击按钮时 父子组件的参数同时会-1

这样就实现了数据双向同步(注意传参$clickIndex加$。完成在父子组件中定义状态后,最关键的就是要建立父子组件的双向关联关系。在父组件中使用子组件时,将父组件的clickIndex传递给子组件的clickIndex。其中父组件的clickIndex加上$表示传递的是引用)

import propTest from "../view/propTest"
@Entry
@Component
struct UseProp {@State message: string = '父组件prop'@State clickIndex: number = 0build() {Column() {Text('clickIndex:'+this.clickIndex).fontSize(40).fontWeight(FontWeight.Bold).fontColor(Color.Brown)Button('爸爸+2').onClick((event: ClickEvent) => {this.clickIndex+=2}).backgroundColor(Color.Brown)propTest({message:this.message,clickIndex:$clickIndex})}.width('100%')}
}

子组件

@Component
export default struct propTest {@Prop message: string ;@Link clickIndex:number;build() {Column() {Text('clickIndex:'+this.clickIndex).fontSize(40).fontWeight(FontWeight.Bold).fontColor(Color.Green)Button('儿子-1').onClick((event: ClickEvent) => {this.clickIndex-=1}).backgroundColor(Color.Green)}.width('100%')}}

拓展:@watch监听属性

将上述的子组件的clickIndex加上监听器,当clickIndex变化时触发自定义回调函数onClickIndexChanged。函数可以加自己逻辑,比如现在是当clickIndex要小于0时会弹出提示,并且不能为负数。

注意:watch不仅仅是能监听 link修饰符的参数的,@State 、@prop其他的修饰符也能监听

import prompt from '@system.prompt';
@Component
export default struct propTest {@Prop message: string ;@Link @Watch('onClickIndexChanged') clickIndex:number;onClickIndexChanged(){if(this.clickIndex<0){prompt.showToast({message:"数量不能小于0"})this.clickIndex=0}}build() {Column() {Text('clickIndex:'+this.clickIndex).fontSize(40).fontWeight(FontWeight.Bold).fontColor(Color.Green)Button('儿子-1').onClick((event: ClickEvent) => {this.clickIndex-=1}).backgroundColor(Color.Green)}.width('100%')}}

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

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

相关文章

力扣hot100:1.两数之和

输入中可能存在重复值 。 分析&#xff1a; 本题需要返回的是数组下标&#xff0c;因此如果需要使用排序然后双指针的话&#xff0c;需要用到哈希表&#xff0c;但是由于输入中可能存在重复值&#xff0c;因此哈希表的value值必须是vector<int>。 使用双指针求目标值targ…

Ansible setup 模块 该模块主要用于收集信息,是通过调用facts组件来实现的。

目录 作用查看信息验证保存信息验证 作用 该模块主要用于收集信息&#xff0c;是通过调用facts组件来实现的。   facts组件是Ansible用于采集被管机器设备信息的一个功能&#xff0c;我们可以使用setup模块查机器的所有facts信息&#xff0c;可以使用filter来查看指定信息。…

【系统维护】-微软电脑管家官网

以前没注意&#xff0c;最近一次升级后给安装了微软电脑管家&#xff0c;特别是瘦身功能感觉比较好&#xff0c;以前总是装第三方或者用命令行情况&#xff0c;有时候不小心还会给系统搞崩溃。感觉这个会安全很多。 还有其他一些功能&#xff0c;建议感兴趣的的可以试一下&…

Axure导入使用ElementUI组件库

在使用Axure进行UI设计时&#xff0c;我们可能导入ElementUI组件库或者一些其他的元件库&#xff0c;其实非常简单&#xff0c;如果你还没有装好Axure可以先安装好AxureRP9汉化版&#xff0c;接下来&#xff0c;我们以AxureRP9汉化版来演示如何导入ElementUI组件库。 第一步&a…

CMake 生成器

关于 CMake 的讨论已有不少&#xff0c;因为 CMake 无疑是一个伟大的工具。如果你搜索“CMake”&#xff0c;你肯定会看到这样一句话&#xff1a;“CMake 不是一个构建系统&#xff0c;而是一个构建系统生成器”。因此&#xff0c;本篇文章的内容主要围绕什么是 CMake 生成器&a…

低代码开发平台优势揭秘 | 提升应用程序开发效率

低代码开发平台是指不用编码或少量编码即可快速产生应用程序的开发平台。依据平台的可视化开发方式&#xff0c;具有不同经验水准的开发者能通过图型操作面板、系统软件拖拽组件和模型驱动思维创建网页和移动应用程序。低代码开发平台在如今企业数字化的蓬勃发展中发挥着不可替…

【Leetcode每日一题】DP35 二维前缀和(难度⭐⭐)(26)

1. 题目解析 题目链接&#xff1a;DP35 【模板】二维前缀和 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 核心在于计算题目所给二维区间数组元素和返回即可。 2. 算法原理 和上题了类似的方法&#xff0c;使用dp数组来保存[1…

智慧公厕:打造智慧城市的环卫明珠

在城市建设中&#xff0c;公共卫生设施的完善和智能化一直是重要环节。而智慧公厕作为智慧城市建设的重要组成部分&#xff0c;发挥着不可替代的作用。本文以智慧公厕源头实力厂家广州中期科技有限公司&#xff0c;大量精品案例现场实景实图&#xff0c;解读智慧公厕如何助力打…

风险评估是什么意思?与等保测评有什么区别?

最近看到不少小伙伴在问&#xff0c;风险评估是什么意思&#xff1f;与等保测评有什么区别&#xff1f;这里我们就来简单聊聊。 风险评估是什么意思&#xff1f; 风险评估是指对某个特定领域或项目进行全面分析和评估&#xff0c;以确定可能存在的潜在风险和危害&#xff0c;并…

Vue-02

开发者工具 安装插件&#xff0c;用于调试 Vue 应用。 https://chrome.zzzmh.cn/index 搜索 Vue &#xff0c;下载 Vue.js Devtools &#xff0c;此插件可以帮助更新信息&#xff0c;而不通过控制台更新&#xff0c;更方便调试。 注&#xff1a;安装插件后&#xff0c;记得在插…

【仿真基本功】【PyTorch】从头安装PyTorch(GPU版本)【2024/03/03更新】

【仿真基本功】【PyTorch】从头安装PyTorch&#xff08;GPU版本&#xff09;【2024/03/03更新】 安装步骤1. 安装Anaconda2. 查看显卡对CUDA版本的支持3. 查看PyTorch的安装需求4. 安装PyTorcha) 配置新环境b) 进入新环境c) 按照CUDA版本要求&#xff0c;必须小于等于显卡支持的…

MyBatis操作数据库(注解方式)

MyBatis是一个持久层框架&#xff0c;和Spring没有任何关系&#xff0c;可以用来简化数据库的操作&#xff01; 创建工作&#xff1a; 创建Spring Boot工程&#xff0c;并导入MyBatis的起步依赖&#xff0c;Mysql的依赖等 配置数据库&#xff1a; #配置数据库的连接字符串 s…