花粉乐分享平台宣传视频
> 华为资讯 > 华为资讯 > 鸿蒙编程 > 鸿蒙HarmonyOS ArkUI(eTS)组件通信方式总结之二:@Link
鸿蒙HarmonyOS ArkUI(eTS)组件通信方式总结之二:@Link
来源:带娃学编程1001
2022-11-30 11:03:13
371
管理

鸿蒙HarmonyOS ArkUI(eTS)组件间通信涉及组件属性与显示、父子组件间通信、祖孙组件间通信、不相干组件间通信等,而组件两两间通信也有单向与双向之分。通过学习HDC2021和官方文档,本系列以@State、@Link、@Prop、@Provide与@Consume、@StorageLink等组件状态装饰器介绍组件间通信方式。

本次介绍:@State和@Link。

@State和@Link用于父子组件间双向数据通信,父组件中变量(如:fatherVal)用@State装饰,子组件中变量(如:sonVal)用@Link装饰。父组件中变量fatherVal变化时,子组件中变量sonVal同步改变,保持与fatherVal一致。反之,当子组件中变量sonVal变化时,父组件中变量fatherVal也同步改变,保持与sonVal一致。父子组件中任何一个组件的变量变化时,父子组件重新渲染。

示例代码如下:

@Entry@Componentstruct Index { @State fatherVal: number = 0 build() { Column(){ Text(`父组件: ${this.fatherVal}`) .fontSize(50) .fontWeight(FontWeight.Bold) .margin({top: 30}) Row(){ Button('加 1') .width('100') .onClick(()=> { this.fatherVal }) .margin({right:20}) Button('减 1') .width('100') .onClick(()=> { this.fatherVal -- }) } .margin({bottom: 20}) Divider() subIndex({sonVal: $fatherVal}) } .width('100%') .height('100%') .backgroundColor(Color.Pink) }}//子组件@Componentstruct subIndex { @Link sonVal: number build(){ Column(){ Text(`子组件: ${this.sonVal}`) .fontSize(50) .fontWeight(FontWeight.Bold) .margin({top: 30}) Row(){ Button('加 1') .width('100') .onClick(()=> { this.sonVal }) .margin({right:20}) Button('减 1') .width('100') .onClick(()=> { this.sonVal -- }) } } .width('90%') .backgroundColor(Color.Orange) }}

当在父组件中点击“加1”或“减1”按钮,或在子组件中点击“加1”或“减1”按钮,标签中的值均同步变化,说明父子组件间通过@State、@Link装饰的变量是双向数据绑定的。

使用注意事项:

1.支持多种类型:@Link装饰变量的类型与@State装饰变量的类型相同,可为class、number、string、boolean或这些类型的数组;

2.私有性:变量仅在组件内访问;

3.单个数据源:初始化@Link变量必须用父组件中@State变量;

4.双向通信:子组件对@Link变量的更改将同步修改父组件的@State变量;

5.组件初始化:创建自定义组件时,需要将父组件中@State变量的引用传递给子组件中的@Link变量,@State变量通过'$'操作符创建引用,初始化子组件时变量fatherVal前不加this。

6.@Link变量不能在组件内部进行初始化。

花粉社群VIP加油站

2
点赞
赏礼
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与花粉乐分享无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
凡本网注明 “来源:XXX(非花粉乐分享)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。
如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。
QQ:2443165046 邮箱:info@hflfx.com
关于作者
回眸一句草泥..(采蜜高手)
文章
791
主题
7
关注
0
粉丝
1
点击领取今天的签到奖励!
签到排行
随手拍
54个圈友 0个话题
华为手机随手拍,记录生活点滴之美好
华为P30pro
51个圈友 0个话题
这里是华为P30pro手机交流圈,欢迎华为P30pro用户进群交流
体验官
60个圈友 2个话题
华为花粉体验官,体验官专属的交流群
登录后查看您创建的圈子
登录后查看您创建的圈子
所有圈子
杭州互联网违法和不良信息举报平台 网络110报警服务 浙ICP备17046585号
2
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索