鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍

ops/2025/2/8 6:13:08/

鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍

1.1 双向数据绑定概念

在鸿蒙(HarmonyOS)应用开发中,双向数据改变(或双向数据绑定)是一种让数据·模型和UI组件之间保持同步的机制,当数据发生变化时,UI自动更新;反之,当用于通过UI代码操作修改数据时,数据模型也会同步更新,这种机制简化了开发,减少了手动DOM或UI组件的代码量,举个简单的例子,比如输入框和变量的绑定,用户输入变量更新,变量在其他地方修改时输入框的内容也发生变化

1.2双向数据绑定步骤

  1. @State装饰器修饰数据
  2. 通过@onchange事件去收集改变的值,并将新值赋值给原来变量,达到数据改变

image-20250204215640443

1.3案例演示

  • 代码演示
@Entry
@Component
struct Test1 {@State userName: string = '小程神'build() {Column({ space: 20 }) {Text('通过onChange收集inputValue')TextInput().border({color: Color.Black,width: 1}).onChange((value) => {this.userName = value})Text('展示inputvalue')TextInput({ text: this.userName }).border({width: 1,color: Color.Black})}.height('100%').width('100%').padding(20)}
}
  • 效果展示

img

  • 总结
    1. 数据发生变化 绑定text的值 –>视图产生更新
    2. 视图产生事件 onChange事件 –>数据发生变化

1.4MVVM:$$语法糖

通过上述的onChange事件改变数据,其实还有更为简便的一种方式可以实现双向数据绑定

官方文档上提供了以下组件实现双向数据绑定的快捷方法

image-20250204220418730

1.4.1案例演示

  1. textInput演示
  • 代码展示
@Entry
@Component
struct Test2 {@State message: string = 'Hello World';build() {Column({ space: 10 }) {Text(this.message)TextInput({ text: $$this.message })Button('改变数据').onClick(() => {this.message = '我的小猫暴脾气'})}.width('100%').height('100%').padding(20)}
}
  • 效果展示

img

  1. checkBox展示
  • 代码展示
    Text(this.ischecked+'')Checkbox().select($$this.ischecked)
  • 效果展示

img

  1. Toggle展示
  • 代码展示
      Text(this.isOn + '')Toggle({type: ToggleType.Switch,isOn: $$this.isOn})
  • 案例演示

img

  1. 时间选择器展示
  • 代码展示
     Text(this.date.toDateString())DatePicker({selected:$$this.date})
  • 效果演示

img

5.Select展示

  • 代码展示
   Text('mySelect' + this.select)Select([{ value: 'vip' },{ value: '绿钻' },{ value: '黄钻' }]).value($$this.select)
  • 效果展示

img


http://www.ppmy.cn/ops/156655.html

相关文章

RK3568使用opencv(使用摄像头捕获图像数据显示)

文章目录 一、opencv相关的类1. **cv::VideoCapture**2. **cv::Mat**3. **cv::cvtColor**4. **QImage**5. **QPixmap**总结二、代码实现一、opencv相关的类 1. cv::VideoCapture cv::VideoCapture 是 OpenCV 中用于视频捕捉的类,常用于从摄像头、视频文件、或者图像序列中捕…

Linux常用命令——时间日期类

文章目录 data显示当前日期data显示非当前日期date 设置系统时间cal 查看日历 data显示当前日期 (1)date (功能描述:显示当前时间) (2)date %Y (功能描述:显示当前年份&…

GC日志分析

从提供的GC日志中,我们可以分析并总结以下几个关键点: 1. GC日志中的关键信息 Before GC(GC前堆状态): ParNew Generation(新生代): 总内存(Total): 546,176…

vs code 使用教程

一、定义 多行注释vs 找不到上层文件路径选择 或 创建python 虚拟环境git 远程克隆及推送vs code 文件路径vs 使用tensorboard 二、使用 学习网站:https://learn.microsoft.com/zh-cn/visualstudio/python/?viewvs-2022性能分析:https://learn.micros…

Github - 记录一次对“不小心包含了密码的PR”的修复

Github - 记录一次对“不小心包含了密码的PR”的修复 前言 和好朋友一起开发一个字节跳动青训营抖音电商后端(now private)的项目,某大佬不小心把本地一密码commit上去并提了PR。 PR一旦发出则无法被删除,且其包含的commit也能被所有能看到这个仓库的…

【BUUCTF逆向题】[2019红帽杯]easyRE

前言:这题与前面不同。flag不在输入输出中,甚至不在main函数中,就是藏在一个隐秘的角落! 一.[2019红帽杯]easyRE 首先就是查到了upx壳然后在kali中脱壳,之后用IDA64打开静态分析 进入之后发现没有找到main函数&#…

2025 CCF BDCI|“基于TPU平台的OCR模型性能优化”一等奖作品

2024年12月,中国计算机学会在海南博鳌成功举办了第十二届CCF大数据与计算智能大赛(简称2024 CCF BDCI)。本届比赛的算能赛道吸引了1748名选手报名,经过激烈角逐,北京航空航天大学的“常务副SOTA”团队脱颖而出&#xf…

【大数据技术】词频统计样例(hadoop+mapreduce+yarn)

词频统计(hadoop+mapreduce+yarn) 搭建完全分布式高可用大数据集群(VMware+CentOS+FinalShell) 搭建完全分布式高可用大数据集群(Hadoop+MapReduce+Yarn) 在阅读本文前,请确保已经阅读过以上两篇文章,成功搭建了Hadoop+MapReduce+Yarn的大数据集群环境。 写在前面 Wo…